COUNT(*)conta tutte le righe nel set di risultati (o nel gruppo se si utilizza GROUP BY).COUNT(column_name)conta solo le righe in cuicolumn_nameNON è NULLA. Questo potrebbe essere più lento in alcune situazioni anche se non ci sono valori NULL perché il valore deve essere controllato (a meno che la colonna non sia nullable).COUNT(1)è uguale aCOUNT(*)poiché 1 non può mai essere NULL.
Per vedere la differenza nei risultati puoi provare questo piccolo esperimento:
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;
Risultato:
a b c 3 2 3