COUNT(*)
räknar alla rader i resultatuppsättningen (eller gruppen om du använder GROUP BY).COUNT(column_name)
Räknar bara de rader därcolumn_name
är INTE NULL. Detta kan vara långsammare i vissa situationer även om det inte finns några NULL-värden eftersom värdet måste kontrolleras (såvida kolumnen inte är nullbar).COUNT(1)
är samma somCOUNT(*)
eftersom 1 aldrig kan vara NULL.
För att se skillnaden i resultaten kan du prova detta lilla 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;
Resultat:
a b c 3 2 3