Duplicata possible :
Compte(*) vs Compte(1)
Je me souviens qu'on m'a dit, de manière anecdotique :
n'utilisez jamais count(*) lorsque count(1) fait l'affaire
Récemment, j'ai transmis ce conseil à un autre développeur, et on m'a demandé de prouver que c'était vrai. Mon argument était ce qu'on m'avait dit en même temps que le conseil : que la base de données ne renverrait que la première colonne, qui serait alors comptée. Le contre-argument était que la base de données n'évaluerait rien dans les parenthèses.
D'après quelques essais (non scientifiques) sur de petites tables, il ne semble pas y avoir de différence. Je n'ai actuellement pas accès à de grandes tables pour faire des essais.
On m'a donné ce conseil lorsque j'utilisais Sybase et que les tables comptaient des centaines de millions de lignes. Je travaille maintenant avec Oracle et j'ai beaucoup moins de données.
Donc je suppose qu'en résumé, mes deux questions sont :
- Lequel est le plus rapide, count(1) ou count(*) ?
- Cela varie-t-il selon les différents fournisseurs de bases de données ?