Maison >base de données >tutoriel mysql >SELECT DISTINCT ou GROUP BY : quelle requête MySQL est la plus rapide pour les valeurs uniques ?
Comparaison des performances de SELECT DISTINCT et GROUP BY dans MySQL
Dans MySQL, vous pouvez utiliser une requête SELECT DISTINCT
ou GROUP BY
pour extraire des valeurs uniques dans la table. Il existe cependant une certaine ambiguïté quant à la méthode la plus performante.
Considérez la forme suivante :
<code class="language-sql">CREATE TABLE users ( id int(10) unsigned NOT NULL auto_increment, name varchar(255) NOT NULL, profession varchar(255) NOT NULL, employer varchar(255) NOT NULL, PRIMARY KEY (id) )</code>
Pour récupérer des valeurs uniques pour le champ "profession", vous pouvez utiliser deux requêtes :
Requête 1 (SELECT DISTINCT
) :
<code class="language-sql">SELECT DISTINCT u.profession FROM users u</code>
Requête 2 (GROUP BY
) :
<code class="language-sql">SELECT u.profession FROM users u GROUP BY u.profession</code>
Lequel est le plus rapide ?
Bien que ces deux requêtes semblent fonctionnellement équivalentes, leurs performances peuvent varier en fonction de l'optimiseur de requêtes. Généralement, SELECT DISTINCT
est légèrement plus rapide.
C'est parce que GROUP BY
regroupe par défaut toutes les colonnes visibles. Dans ce cas, étant donné qu'aucune autre colonne n'est utilisée dans la requête, l'optimiseur devra peut-être effectuer un travail supplémentaire pour déterminer si le regroupement n'a pas de sens. D'un autre côté, SELECT DISTINCT
demande explicitement une valeur unique.
Conclusion
Dans la plupart des cas, la différence de performances entre SELECT DISTINCT
et GROUP BY
est négligeable. Cependant, si l'optimisation est critique, il est recommandé d'utiliser SELECT DISTINCT
car cela simplifie la tâche de l'optimiseur de requêtes.
Astuce : Pour obtenir des résultats concluants, il est recommandé de toujours tester les deux méthodes dans un environnement de suivi des performances.
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!