Utiliser efficacement COUNT(*) dans la clause WHERE de MySQL
Déterminer si les valeurs distinctes d'une colonne ont un nombre dépassant un certain seuil est une opération courante tâche dans MySQL. Bien qu'il puisse sembler simple d'utiliser COUNT(*) dans la clause WHERE pour filtrer les résultats, une telle approche peut s'avérer inefficace.
Pour éviter cette approche gourmande en ressources, envisagez d'utiliser la syntaxe alternative suivante :
<code class="sql">SELECT DISTINCT gid FROM `gd` GROUP BY gid HAVING COUNT(*) > 10 ORDER BY lastupdated DESC</code>
En utilisant la clause GROUP BY, MySQL regroupe les lignes selon les valeurs distinctes de gid. La clause HAVING applique ensuite la fonction d'agrégation COUNT(*) à chaque groupe, en filtrant ceux dont le nombre est inférieur à 10. Enfin, la clause ORDER BY trie les résultats par ordre décroissant en fonction de la dernière mise à jour de la colonne d'horodatage.
Cette approche est plus efficace car elle n'effectue l'agrégation qu'une seule fois par valeur distincte, plutôt qu'une fois pour chaque ligne. Cette optimisation peut améliorer considérablement les performances des tables comportant un grand nombre de lignes.
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!