Myślę, że można to przetestować za pomocą funkcji sleep(),
na przykład spójrz na to demo: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;
Czasy wykonania obu zapytań to około 3000 ms ( 3 sekundy ).
W tabeli są 3 rekordy, a dla każdego rekordu zapytanie jest uśpione tylko przez 1 sekundę,
więc oznacza to, że wyrażenie jest oceniane tylko raz dla każdego rekordu, a nie dwa razy.