mysql数据库中别名的重用

qc6wkl3g  于 2021-06-18  发布在  Mysql
关注(0)|答案(0)|浏览(216)

我想问一些关于重用别名的问题。
我有这样的例子,
第一个查询:

select
@tmp1 := if(AA.id= '','abcde','yuiop') as tmp1,
CONCAT_WS('-',
SUBSTR(@tmp1, 1, 2),
SUBSTR(@tmp1, 3, 4),
SUBSTR(@tmp1, 5)
) AS tmp1_res
FROM some_database as AA

第二个问题:

select
CONCAT_WS('-',
SUBSTR(if(AA.id= '','abcde','yuiop'), 1, 2),
SUBSTR(if(AA.id= '','abcde','yuiop'), 3, 4),
SUBSTR(if(AA.id= '','abcde','yuiop'), 5)
) AS tmp1_res
FROM some_database as AA

两个查询都运行得很好,但我想知道哪一个更有效。
在第一个查询中,我看到substring只调用了一个特定的占位符变量。我假设它不会先检查aa.id 3次,然后再将它们分开,我想这样效率会更高。是这样吗?
谢谢您
编辑
谢谢你的回复。我刚刚测试了两种方法,结果发现第二种方法比第一种方法快一点(大约0.001~0.004秒)。
另一件事我真的不明白,对于第一个查询,行为是否与第二个查询相同(据我所知,第二个查询每次使用减法函数时都会按if条件检查id列,而第一个查询只执行if条件一次)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题