sql >> Database >  >> RDS >> Mysql

Elimineert MySQL veelvoorkomende subexpressies tussen de SELECT- en HAVING/GROUP BY-clausule?

Ik denk dat dit kan worden getest met de functie sleep()
kijk bijvoorbeeld eens naar deze 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;

De uitvoeringstijden van beide query's zijn ongeveer 3000 ms (3 seconden).
Er zijn 3 records in de tabel en voor elke record slaapt de query slechts 1 seconde,
dus het betekent dat de expressie wordt geëvalueerd slechts één keer voor elk record, niet twee keer.



  1. Ik wil een trigger om te VERWIJDEREN van 2 tabellen in MySQL

  2. Primaire MySQL-sleutels

  3. Kan niet naar rij 0 springen op MySQL-resultaatindex 13

  4. SQL-Server en MySQL-interoperabiliteit?