COUNT(*)
conta todas as linhas no conjunto de resultados (ou grupo se estiver usando GROUP BY).COUNT(column_name)
conta apenas as linhas em quecolumn_name
não é nulo. Isso pode ser mais lento em algumas situações, mesmo que não haja valores NULL porque o valor deve ser verificado (a menos que a coluna não seja anulável).COUNT(1)
é o mesmo queCOUNT(*)
já que 1 nunca pode ser NULL.
Para ver a diferença nos resultados, você pode tentar este pequeno experimento:
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;
Resultado:
a b c 3 2 3