Maison > Article > base de données > Comment optimiser les requêtes COUNT(*) dans MySQL sans sous-requêtes ?
É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
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
Explication :
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!