La méthode la plus générale pour satisfaire une clause
GROUP BY
est de scanner toute la table et de
créer une table temporaire où toutes les lignes de chaque
groupe sont rangées consécutivement, puis d'utiliser cette
table temporaire pour trouver les groupes, et leur appliquer les
fonctions d'aggrégation s'il y en a. Dans certains cas, MySQL
est capable de faire encore mieux, et d'éviter la création de
la table temporaire grâce aux index.
La plus importante condition à l'utilisation des index pour
GROUP BY
est que toutes les colonnes du
GROUP BY
soient dns le même index, et que
l'index stocke les clés dans le même ordre (par exemple, un
B-Tree et non pas un HASH). L'utilisation de cette technique
dépend aussi des parties de l'index qui sont utilisées dans la
requête, les conditions posées sur ces index, et les
différentes fonctions d'agrégation.
Il y a deux méthodes pour exécuter une requête GROUP
BY
via un accès aux index, tels que présenté dans
les sections suivantes. Dans la première méthode, les
opérations de rgroupmeent sont appliquées ensembles avec les
prédicats d'intervalles. La seconde méthodes commence par
faire une analyse d'intervalle, puis regroupe les lignes
trouvées.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.