count(*)
返回满足条件的记录数。专门进行优化
count(主健ID)
返回满足条件的记录数。InnoDB存储引擎会遍历所有的主键,返回给Server层。Server层会判断是否为空,不为空则进行累加。
count(字段)
返回满足条件但字段不是null的记录数。 分为两种情况 一、如果字段定义为not null,则一行行取出来进行累加。 二、如果字段定义为允许为null,则取出来之后,还需要判断字段是否允许为null,不为null才进行累加。
count(1)
返回满足条件的记录数。InnoDB会遍历整张表,与count(主键ID)不同的是,它不取值。直接返回给Server层。Server层会判断是否为空,不为空则进行累加。
结论
count(字段) count(主键ID) count(1) count(*)