开发者社区> 问答> 正文

关于查询计数的一个问题

线上的一个大表(ENGINE=InnoDB) 接近5000万条记录 比较count()与count(id)的查询时间 发现count()要明显优于count(id) 如下所示
不带where条件
screenshot
并且这一结果是可重复的
带where条件的情况下的两者比较
screenshot
仍然count(*)快于count(id) is_availability是一个索引: KEY is_availability (is_availability,is_del)

想知道为什么count(*)要优于count(id) 两者有什么区别?官方文档也没提到原因。
使用的数据库版本 5.6.21-1~dotdeb.1-log
其他补充信息
screenshot

展开
收起
蛮大人123 2016-02-13 13:50:09 2558 0
1 条回答
写回答
取消 提交回答
  • count() 会自动指定到一个最优的字段;count(id) 还会对id 列为null的记录进行过滤,所以速度没有count() 快.
    从你截图也可以看出 count(id)出来的结果要比count(*) 小.

    2019-07-17 18:41:57
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载