COUNT(*)
počítá všechny řádky v sadě výsledků (nebo skupině, pokud používáte GROUP BY).COUNT(column_name)
počítá pouze ty řádky, kde jecolumn_name
NENÍ NULL. To může být v některých situacích pomalejší, i když nejsou k dispozici žádné hodnoty NULL, protože hodnotu je třeba zkontrolovat (pokud sloupec nemá hodnotu null).COUNT(1)
je stejný jakoCOUNT(*)
protože 1 nemůže být nikdy NULL.
Chcete-li vidět rozdíl ve výsledcích, můžete zkusit tento malý experiment:
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;
Výsledek:
a b c 3 2 3