Maison > base de données > tutoriel mysql > SELECT DISTINCT vs GROUP BY : lequel est le plus rapide pour la récupération de valeur unique dans MySQL ?

SELECT DISTINCT vs GROUP BY : lequel est le plus rapide pour la récupération de valeur unique dans MySQL ?

Linda Hamilton
Libérer: 2025-01-15 06:42:43
original
821 Les gens l'ont consulté

SELECT DISTINCT vs. GROUP BY: Which is Faster for Unique Value Retrieval in MySQL?

MySQL : SELECT DISTINCT vs. GROUP BY pour des valeurs uniques

Lors de la récupération de valeurs uniques d'une table MySQL, SELECT DISTINCT et GROUP BY peuvent sembler interchangeables, mais leurs performances peuvent différer considérablement. Cet article compare leur efficacité.

Scénario : Récupération de profession unique

Considérons une requête pour récupérer des professions uniques de la table users pour les employés de 'XYZ' :

<code class="language-sql">SELECT u.profession FROM users u
WHERE u.employer = 'XYZ'
ORDER BY u.profession</code>
Copier après la connexion

Pour garantir que seules les professions uniques sont renvoyées, nous pouvons utiliser SELECT DISTINCT ou GROUP BY :

Option 1 : SELECT DISTINCT

<code class="language-sql">SELECT DISTINCT u.profession FROM users u
WHERE u.employer = 'XYZ'
ORDER BY u.profession</code>
Copier après la connexion

Option 2 : GROUP BY

<code class="language-sql">SELECT u.profession FROM users u
WHERE u.employer = 'XYZ'
GROUP BY u.profession
ORDER BY u.profession</code>
Copier après la connexion

Considérations relatives aux performances

Bien que les deux requêtes produisent le même résultat, SELECT DISTINCT offre généralement de meilleures performances. MySQL optimise SELECT DISTINCT à l'aide de techniques telles que les bitmaps ou les tables de hachage, filtrant efficacement les doublons en un seul passage. GROUP BY, à l'inverse, implique le regroupement de lignes et une surcharge d'agrégation supplémentaire, ce qui peut potentiellement ralentir l'exécution des requêtes.

Exceptions : quand GROUP BY pourrait être plus rapide

Bien que SELECT DISTINCT l'emporte généralement, GROUP BY peut le surpasser dans des situations spécifiques. Si la clause ORDER BY inclut des colonnes au-delà de la colonne profession, GROUP BY peut offrir une optimisation supérieure.

Recommandation

Pour récupérer des valeurs uniques dans MySQL, SELECT DISTINCT est généralement le choix le plus efficace. Cependant, il est crucial de comparer les deux requêtes avec vos données spécifiques pour déterminer l'approche optimale pour votre application.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal