COUNT(*)
cuenta todas las filas en el conjunto de resultados (o grupo si se usa GROUP BY).COUNT(column_name)
solo cuenta aquellas filas dondecolumn_name
No es nulo. Esto puede ser más lento en algunas situaciones, incluso si no hay valores NULL porque el valor debe verificarse (a menos que la columna no admita valores NULL).COUNT(1)
es lo mismo queCOUNT(*)
ya que 1 nunca puede ser NULL.
Para ver la diferencia en los resultados puedes probar este pequeño 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