count(*)和count(column_name),差异是什么?

lov*_*ing 13 mysql

count(*)而且count(column_name),mysql有什么区别.

Mar*_*ers 25

  • COUNT(*) 计算结果集中的所有行(如果使用GROUP BY,则计算组).
  • COUNT(column_name)只计算column_nameNOT NULL的那些行.在某些情况下,即使没有NULL值,这可能会更慢,因为必须检查该值(除非该列不可为空).
  • COUNT(1)是一样的,COUNT(*)因为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;
Run Code Online (Sandbox Code Playgroud)

结果:

a   b   c
3   2   3