Повторное использование Alias ​​в MySQL - PullRequest
0 голосов
/ 27 сентября 2018

Я хочу спросить кое-что о повторном использовании псевдонима.

У меня есть такой пример,

1-й запрос:

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

2-й запрос:

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

Оба запроса работают хорошо, но мне интересно, какой из них более эффективен.

В первом запросе я вижу, что подстрока вызывает только определенную, на мой взгляд, переменную-заполнитель.Я предполагаю, что он не будет проверять AA.id 3 раза, а затем разделить их, что, по-моему, будет более эффективным.Это правильно?

Спасибо

РЕДАКТИРОВАТЬ

спасибо за ответы.Я только что проверил оба метода, оказалось, что 2-й метод немного быстрее (примерно на 0,001 ~ 0,004 секунды), чем 1-й.

Еще одна вещь, которую я не совсем понимаю, как для 1-го запроса, этоповедение такое же, как 2-й запрос или нет?(насколько я понимаю, 2-й запрос проверяет столбец id по условию if каждый раз, когда используется функция substract, в то время как первый запрос выполняет условие if только один раз)

...