Je pense que cela peut être testé en utilisant la fonction sleep(),
par exemple, jetez un œil à cette démo :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;
Les temps d'exécution des deux requêtes sont d'environ 3000 ms (3 secondes).
Il y a 3 enregistrements dans la table, et pour chaque enregistrement, la requête dort pendant 1 seconde seulement,
cela signifie donc que l'expression est évaluée une seule fois pour chaque enregistrement, pas deux.