数据库
mysql的InnoDB引擎
聚合函数count
判断参数是否不为null,不为null累计值就加 1,否则不加。最后返回累计值。
比较
1、count(*), 不取值,按行累加。
2、count(1) ,不取值。server 层对于返回的每一行,放一个数字“1”进去,按行累加
2、count(主键 id) ,遍历整张表,把每一行的 id 值都取出来,返回给 server 层。server 层拿到 id 后,判断不为null的,按行累加。
4、count(字段),如果定义为 not null ,逐行地读出,按行累加;如果定义允许为 null,把值取出来再判断一下,不是 null 才累加。
效率
count(字段有NULL值) < count(字段无NULL值) < count(主键 id) < count(1)≈count(*)