一尘不染

count(*)和count(column_name),区别是什么?

mysql

count(*)count(column_name),mysql有什么区别。


阅读 325

收藏
2020-05-17

共1个答案

一尘不染

  • 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 c
FROM table1;

结果:

abc
3 2 3
2020-05-17