De daadwerkelijke uitvoering van MySQL-instructies is een beetje lastig. De standaard specificeert echter wel de volgorde van interpretatie van elementen in de query. Dit is in principe in de volgorde die je opgeeft, hoewel ik denk dat HAVING
en GROUP BY
kan komen na SELECT
:
FROM
clausuleWHERE
clausuleSELECT
clausuleGROUP BY
clausuleHAVING
clausuleORDER BY
clausule
Dit is belangrijk om te begrijpen hoe query's worden geparseerd. U kunt geen kolomalias gebruiken die is gedefinieerd in een SELECT
in de WHERE
clausule, bijvoorbeeld omdat de WHERE
wordt geparseerd vóór de SELECT
. Aan de andere kant kan zo'n alias in de ORDER BY
. staan clausule.
Wat betreft de daadwerkelijke uitvoering, dat wordt echt overgelaten aan de optimizer. Bijvoorbeeld:
. . .
GROUP BY a, b, c
ORDER BY NULL
en
. . .
GROUP BY a, b, c
ORDER BY a, b, c
beide hebben het effect van de ORDER BY
wordt helemaal niet uitgevoerd -- en dus niet uitgevoerd na de GROUP BY
(in het eerste geval is het effect het verwijderen van de sortering uit de GROUP BY
en in de tweede is het effect om niets meer te doen dan de GROUP BY
al doet).