Maison >base de données >tutoriel mysql >SELECT DISTINCT ou GROUP BY : quelle requête MySQL est la plus rapide pour les valeurs uniques ?

SELECT DISTINCT ou GROUP BY : quelle requête MySQL est la plus rapide pour les valeurs uniques ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-15 06:28:43453parcourir

SELECT DISTINCT or GROUP BY: Which MySQL Query is Faster for Unique Values?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn