COUNT(*)
计算结果集中的所有行(如果使用GROUP BY,则为组)。COUNT(column_name)
只计算column_name
不为空的那些行。即使没有NULL值,在某些情况下这也会变慢,因为必须检查该值(除非该列不可为空)。COUNT(1)
与COUNT(*)
1 相同,因为1永远不能为NULL。
要查看结果的差异,您可以尝试以下小实验:
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 cFROM table1;
结果:
abc3 2 3



