MySQL 5.7下InnoDB对COUNT(*)的优化
短信预约 -IT技能 免费直播动态提醒
在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
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341