Mysql
 sql >> Datenbank >  >> RDS >> Mysql

count(*) und count(column_name), was ist der Unterschied?

  • COUNT(*) zählt alle Zeilen in der Ergebnismenge (oder Gruppe, wenn GROUP BY verwendet wird).
  • COUNT(column_name) zählt nur die Zeilen mit column_name ist NICHT NULL. Dies kann in einigen Situationen langsamer sein, selbst wenn keine NULL-Werte vorhanden sind, da der Wert überprüft werden muss (es sei denn, die Spalte ist nicht nullfähig).
  • COUNT(1) ist dasselbe wie COUNT(*) da 1 niemals NULL sein kann.

Um den Unterschied in den Ergebnissen zu sehen, können Sie dieses kleine Experiment ausprobieren:

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;

Ergebnis:

a   b   c
3   2   3