Contrairement aux autres fonctions d'agrégation, COUNT() s'utilise presque toujours avec une étoile (Ex : COUNT(*) ).
En fait, il est possible de préciser le nom du champ à compter (Ex : COUNT(id) ) mais ceci est, la plupart du temps, inutile et même nuisible.
Dans la démonstration suivante, il n'y a qu'une différence de 0.08 secondes mais avec un nombre d'enregistrements plus élevé, on pourrait atteindre quelques secondes de différence, ce qui est énorme dans le monde du Web.

Dans le cas où les informations d'un champ peuvent être nulles, le résultat de COUNT(*) par rapport à COUNT(nomchamp) peut différer. C'est que les valeurs nulles ne feront pas partie du décompte lorsqu'on demande de compter seulement la colonne pouvant contenir des valeurs nulles.
À vous donc de réserver l'utilisation de COUNT(nomchamp) pour les cas où, effectivement, vous ne désirez pas compter les enregistrements pour lesquels ce champ contient la valeur NULL.

« 12.19.1 GROUP BY (Aggregate) Functions - COUNT ». MySQL. http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_count
« COUNT(*) vs COUNT(col) ». MySQL Performance Blog. https://www.percona.com/blog/2007/04/10/count-vs-countcol/
▼Publicité