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_name
NON è 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