线上的一个大表(ENGINE=InnoDB) 接近5000万条记录 比较count()与count(id)的查询时间 发现count()要明显优于count(id) 如下所示
不带where条件
并且这一结果是可重复的
带where条件的情况下的两者比较
仍然count(*)快于count(id) is_availability是一个索引: KEY is_availability (is_availability,is_del)
想知道为什么count(*)要优于count(id) 两者有什么区别?官方文档也没提到原因。
使用的数据库版本 5.6.21-1~dotdeb.1-log
其他补充信息
count() 会自动指定到一个最优的字段;count(id) 还会对id 列为null的记录进行过滤,所以速度没有count() 快.
从你截图也可以看出 count(id)出来的结果要比count(*) 小.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。