Maison > base de données > tutoriel mysql > le corps du texte

Comment optimiser les requêtes COUNT(*) dans MySQL sans sous-requêtes ?

Mary-Kate Olsen
Libérer: 2024-11-05 13:49:01
original
294 Les gens l'ont consulté

How to Optimize COUNT(*) Queries in MySQL Without Subqueries?

Éviter les sous-requêtes dans la clause WHERE de MySQL : Optimisation COUNT(*)

Lorsque vous travaillez avec de grands ensembles de données dans MySQL, l'optimisation des performances est cruciale. Un scénario courant consiste à utiliser COUNT(*) dans la clause WHERE, ce qui peut nécessiter beaucoup de ressources. Cet article explore une solution alternative pour améliorer l'efficacité des requêtes sans recourir à des sous-requêtes.

Problème :

Vous souhaitez récupérer des valeurs distinctes de la table 'gd' où le nombre par enregistrement dépasse 10. Généralement, cela serait réalisé en utilisant une requête telle que :

SELECT DISTINCT gid
FROM `gd`
WHERE COUNT(*) > 10
ORDER BY lastupdated DESC
Copier après la connexion

Cependant, cette approche implique une sous-requête coûteuse dans la clause WHERE.

Solution :

Au lieu d'utiliser une sous-requête, exploitez la clause HAVING après une opération GROUP BY :

SELECT gid
FROM `gd`
GROUP BY gid
HAVING COUNT(*) > 10
ORDER BY lastupdated DESC
Copier après la connexion

Explication :

  • L'opérateur GROUP BY regroupe les lignes en fonction du champ « gid ».
  • Chaque groupe est ensuite évalué à l'aide de la clause HAVING, qui filtre les groupes dont le nombre est inférieur ou égal à 10.
  • La clause ORDER BY est appliquée aux résultats filtrés.

Cette approche élimine la surcharge liée à l'exécution d'une sous-requête dans la clause WHERE, améliorant considérablement les performances des requêtes.

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