Penso che questo possa essere testato usando la funzione sleep(),
per esempio dai un'occhiata a questa 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;
I tempi di esecuzione di entrambe le query sono di circa 3000 ms ( 3 secondi ).
Ci sono 3 record nella tabella e per ogni record la query dorme solo per 1 secondo,
quindi significa che l'espressione viene valutata solo una volta per ogni record, non due.