Мисля, че това може да се тества с помощта на функция sleep(),
например разгледайте тази демонстрация:http://sqlfiddle.com/#!2/0bc1b/1
Select * FROM t;
| X |
|---|
| 1 |
| 2 |
| 2 |
SELECT x+sleep(1)
FROM t
GROUP BY x+sleep(1);
SELECT x+sleep(1) As name
FROM t
GROUP BY name;
Времето за изпълнение на двете заявки е около 3000 ms (3 секунди).
Има 3 записа в таблицата и за всеки запис заявката заспива само за 1 секунда,
така че означава, че изразът се оценява само веднъж за всеки запис, а не два пъти.