在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
以下是基于我结合B+树的数据结构和对实验结果的推测作出的判断,如有错误,恳请指正! 今天实验了一下MySQL的count()操作优化, 以下讨论基于mysql5.7 InnoDB存储引擎. x86 windows操作系统。 创建的表的结构如下(数据量为100万): 首先是关于mysql的count(*),count(PK), count(1)哪个快的问题。 并没有什么区别!加上了WHERE子句之后3个查询的时间也是相同的,我就不贴图片了。 之前在公司的时候就写过一个 这要从InnoDB的索引说起, InnoDB的索引是B+Tree。 对主键索引来说:它只有在叶子节点上存储数据,它的key是主键,并且value为整条数据。 这给我们两个信息: 所以如果要优化count(*)操作的话,我们需要找一个短小的列,为它建立辅助索引。 先建立索引: 可以看到,查询时间从3.35s下降到了0.26s,查询速度提升近13倍。 如果索引是 可以看到,时间为0.422s,也很快,但是比起 再大胆一点做个实验,我把 时间为1.172s alter table test1 add index (status,imdbid); 补充!! 可以看到key_len为6, Extra的说明是using index. 而如果索引失效的话: 索引失效有很多种情况,比如使用函数,!=操作等,具体请参考官方文档。 对MySQL没有很深的研究,以上是基于我结合B+树的数据结构和对实验结果的推测作出的判断,如有错误,恳请指正! 到此这篇关于MySQL 大表的count()优化实现的文章就介绍到这了,更多相关MySQL 大表count()优化内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论