扫码阅读
手机扫码阅读

索引下推,yyds!

88 2024-11-05

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:索引下推,yyds!
文章来源:
江南一点雨
扫码关注公众号

摘要

索引下推(Index Condition Pushdown,简称ICP)是自MySQL5.6起引入的特性,通过减少回表次数以提升查询效率。本文通过对比MySQL5.5和MySQL5.7的查询案例来阐述ICP的工作原理和效益。

1. 索引下推

为了演示索引下推,作者分别在MySQL5.5和5.7版本上准备了相同的数据表,并在表中建立了username和age的复合索引。通过实际查询案例,展示了在MySQL5.5版本中缺乏索引下推时的查询过程及其效率低下的问题。

1.1 准备工作

使用docker创建了两个MySQL实例,并在两个版本中创建了具有复合索引的测试表,为后续的查询分析做好准备。

1.2 MySQL 5.5

在MySQL5.5中,查询如select * from user2 where username='1' and age=99时,会进行回表操作以获取完整数据。查询中仅能将username传递给存储引擎,并在返回的数据中再次过滤age,导致效率较低。

1.3 MySQL 5.7

在MySQL5.7中,相同的查询会触发索引下推特性,存储引擎会在索引层面先判断age条件是否满足,从而减少不必要的回表操作,有效提高了查询效率。

2. 小结

通过索引下推,MySQL在存储引擎中提前判断搜索条件是否满足,避免了无效的回表操作,从而提升了查询效率。这个特性在旧版本的MySQL中缺失,但是随着MySQL5.6及之后版本的推出,这一改进被实现并带来了性能上的显著提升。

想要了解更多内容?

查看原文:索引下推,yyds!
文章来源:
江南一点雨
扫码关注公众号