Clause flexible « GROUP BY » de MySQL : un examen plus approfondi
Contrairement aux systèmes de bases de données comme Oracle et SQL Server, MySQL propose une approche plus indulgente des GROUP BY
clauses, permettant des requêtes sans fonctions d'agrégation. Cette flexibilité, bien que s'écartant de la norme ANSI SQL, offre à la fois des avantages en termes de performances et un confort d'utilisation amélioré.
Gestion par MySQL de GROUP BY
sans agrégats
Dans une requête telle que SELECT X, Y FROM someTable GROUP BY X
, MySQL sélectionne une valeur arbitraire pour Y
associée à chaque groupe X
. Ce comportement est enraciné dans l'interprétation de MySQL selon laquelle inclure Y
sans fonction d'agrégation ni clause GROUP BY
sur Y
lui-même est superflu.
Le raisonnement derrière le choix de conception de MySQL
La décision de MySQL d'autoriser ce type de GROUP BY
requête est motivée par deux facteurs clés :
Conformité ANSI SQL et justification de MySQL
Bien que le comportement de MySQL diffère de la norme stricte ANSI SQL (qui impose des fonctions d'agrégation ou un regroupement par toutes les colonnes non agrégées), les développeurs de MySQL ont justifié cet écart en privilégiant les performances et la facilité d'utilisation pour ses utilisateurs. Les gains de performances potentiels et la simplification des requêtes courantes compensent le non-respect de la norme stricte dans de nombreux scénarios pratiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!