count统计有哪些方式,性能优先级如何?
count统计有哪些方式,性能优先级如何?
count(主键id)
,innodb会遍历整张表,将主键id上的值都取出来,返回给server层,server层判断不为null的前提下,按行累加count(1)
,innodb遍历整张表,不取值。返回给server层,server层对于返回的每一行,都会放一个数字1 进去,不为空的话按行累加count(字段)
,看字段默认是否允许为null,分别进行判断count(*)
,不会将全部字段取出来,专门做了优化,不取值。肯定不是null,按行累加性能:count(*)
> count(1)
> count(主键)
> count(字段)