count(expr)方法是MySQL中计数的方法,从官网可以看到它的解释是返回非空的值的数量
- count(field),指定字段的时候,MySQL会过滤该字段为NULL的情况,中间会有一个过滤过程
- count(*), * 默认匹配所有字段,所以它和count(field)的区别在于,它不会因为字段为空而忽略当前这行数据,默认为匹配的数据行数
- count(1),1恒为非空,所以它统计的也是rows行数,和 count(*)一样,这个在官网中也有说明,这两种处理方式一致,如下图所示:
所以这三种的性能对比: count(*)=count(1) > count(field)