Mysql
 sql >> Base de données >  >> RDS >> Mysql

count(*) et count(column_name), quelle est la différence ?

  • 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