count优化
1,count优化思路
2,count的几种用法
①count(主键)
InnoDB引擎会遍历整张表,把每一行的主键id取出来,返回给服务层。服务层拿到主键后,直接按行进行累加(因为主键不可能为null)
②count(字段)
Ⅰ没有not null约束:InnoDB引擎会遍历整张表把每一行字段取出来,返回给服务层,服务层判断是否为null,不为null,计数累加
Ⅱ 有not null约束:InnoDB引擎遍历整张表把每一行字段取出来,返回给服务层,直接进行累加
③count(1) :InnoDB引擎遍历整张表,但不取值。服务层对于返回的每一行,放一个数字“1”(看你count传递的是哪个数就放哪个数)进去,直接按行进行累加
④count(*) :InnoDB引擎并不会把全部字段取出来,而是专门做了优化,不取值,服务层直接按行进行累加。
排序效率:count(*)
≈ count(1)
> count(主键id)
> count(字段)
所以尽量使用count(*)