sql >> Database >  >> RDS >> Mysql

MySQL-query / uitvoeringsvolgorde van de clausule

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 clausule
  • WHERE clausule
  • SELECT clausule
  • GROUP BY clausule
  • HAVING clausule
  • ORDER 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).



  1. Haal het Oracle-tabeltype op uit de opgeslagen procedure met behulp van JDBC

  2. PL/SQL Bulk Collect met LIMIT-clausule in Oracle Database

  3. Migreren van MySQL Enterprise naar MariaDB 10.3

  4. Verbeterde SQLite-querysyntaxis op Android