目录
count(*)
、count(1)
和 count(字段)
区别
count()
是一个聚合函数,对于返回的结果集,一行行地判断,如果 count
函数的参数不是 NULL
,累计值就加 1
,否则不加。最后返回累计值
count(*)
、count(主键id)
和 count(1)
都表示返回满足条件的结果集的总行数;而count(字段)
则表示返回满足条件的数据行里面,参数“字段”
不为 NULL
的总个数
count(主键id)
与 count(1)
- 对于
count(主键id)
来说,InnoDB
引擎会遍历整张表,把每一行的id
值都取出来,返回给server
层。server
层拿到id
后,判断id
不为NULL
的,就按行累加 - 对于
count(1)
来说,InnoDB
引擎遍历整张表,但不取值。server
层对于返回的每一行,放一个数字“1”
进去ÿ