COUNT(*)
compte toutes les lignes du jeu de résultats (ou du groupe si vous utilisez GROUP BY).COUNT(column_name)
ne compte que les lignes oùcolumn_name
est non nulle. Cela peut être plus lent dans certaines situations, même s'il n'y a pas de valeurs NULL, car la valeur doit être vérifiée (sauf si la colonne n'accepte pas les valeurs NULL).COUNT(1)
est identique àCOUNT(*)
puisque 1 ne peut jamais être NULL.
Pour voir la différence dans les résultats, vous pouvez essayer cette petite expérience :
CREATE TABLE table1 (x INT NULL);
INSERT INTO table1 (x) VALUES (1), (2), (NULL);
SELECT
COUNT(*) AS a,
COUNT(x) AS b,
COUNT(1) AS c
FROM table1;
Résultat :
a b c 3 2 3