COUNT(*)
zählt alle Zeilen in der Ergebnismenge (oder Gruppe, wenn GROUP BY verwendet wird).COUNT(column_name)
zählt nur die Zeilen mitcolumn_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 wieCOUNT(*)
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