码迷,mamicode.com
首页 > 数据库 > 详细

MySQL 5.7下InnoDB对COUNT(*)的优化

时间:2018-01-30 21:16:13      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:handler   函数   toc   解决办法   innodb   显示   没有   方式   完全   

在MySQL 5.7 COUNT()会选择聚集索引,进行一次内部handler函数调用,即可快速获得该表总数

执行计划显示:Extra:Select tables optimized away

5.7以前的版本中,COUNT()请求通常是:扫描普通索引来获得这个总数。
6.执行计划显示: Extra:Using index

如果聚集索引较大(或者说表数据量较大),没有完全加载到buffer pool中的话,MySQL 5.7的查询方式有可能反而会更慢,还不如用原先的方式(MySQL 5.6)
解决办法:强制走普通索引,不过还需要加上WHERE条件,否则还是不行
select count() from stock force index(idx_stock) where id >0;
extra:using where,using index

MySQL 5.7下InnoDB对COUNT(*)的优化

标签:handler   函数   toc   解决办法   innodb   显示   没有   方式   完全   

原文地址:http://blog.51cto.com/395469372/2066973

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!