COUNT(*)
преброява всички редове в резултатния набор (или група, ако се използва GROUP BY).COUNT(column_name)
отчита само онези редове, къдетоcolumn_name
НЕ е NULL. Това може да е по-бавно в някои ситуации, дори ако няма стойности NULL, защото стойността трябва да бъде проверена (освен ако колоната не може да бъде нула).COUNT(1)
е същото катоCOUNT(*)
тъй като 1 никога не може да бъде NULL.
За да видите разликата в резултатите, можете да опитате този малък експеримент:
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;
Резултат:
a b c 3 2 3