前言
索引下推(Index Condition Pushdown, 简称ICP)是MySQL 5.6 版本的新特性,它能减少回表查询次数,提升检索效率。

MySQL体系结构
要明白索引下推,首先要了解MySQL的体系结构:
上图来自MySQL官方文档。
通常把MySQL从上至下分为以下几层:
- MySQL服务层:包括NoSQL和SQL接口、查询解析器、优化器、缓存和Buffer等组件。
- 存储引擎层:各种插件式的表格存储引擎,实现事务、索引等各种存储引擎相关的特性。
- 文件系统层: 读写物理文件。
MySQL服务层负责SQL语法解析、触发器、视图、内置函数、binlog、生成执行计划等,并调用存储引擎层去执行数据的存储和检索。“索引下推”的“下”其实就是指将部分上层(服务层)负责的事情,交给了下层(存储引擎)去处理。
索引下推案例
假设用户表数据和结构如下:
| id |
age |
birthday |
name |
| 1 |
18 |
01-01 |
User1 |
| 2 |
19 |
03-01 |
User2 |
| 3 |
20 |
03-01 |
User3 |
| 4 |
21 |
03-01 |
User4 |
| 5 |
22 |
05-01 |
User5 |
| 6 |
18 |
06-01 |
User6 |
| 7 |
24 |
01-01 |
User7 |
创建一个联合索引(age, birthday),并查询出年龄>20,且生日为03-01的用户:
select * from user where age>20 and birthday="03-01"
由于age字段使用了范围查询,根据最左前缀原则,这种情况只能使用age字段进行范围查询,索引中的birthday字段无法使用。使用explain查看执行计划:
+------+-------------+-------+-------+---------------+--------------+---------+------+------+-----------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+-------+-------+---------------+--------------+---------+------+------+-----------------------+
| 1 | SIMPLE | user | range | age_birthday | age_birthday | 4 | NULL | 3 | Using index condition |
+------+-------------+-------+-------+---------------+--------------+---------+------+------+-----------------------+
可以看到虽然使用了age_birthday索引,但是索引长度key_len只有4,说明只有联合索引只有age字段生效了(因为age字段是int类型,占用4个字节)。最后Extra列的Using index condition表示这个查询使用了索引下推优化。
为在没有索引下推的情况下,执行步骤如下:
- 存储引擎根据索引查找出age>20的用户id,分别是:4,5,7
- 存储引擎到表格中取出id in (4,5,7)的3条记录,返回给服务层
- 服务层过滤掉不符合birthday="03-01"条件的记录,最后返回查询结果为id=4的1行记录。
如果开启了索引下推优化,执行步骤如下:
- 存储引擎根据索引查找出age>20的用户id,并使用索引中的birthday字段过滤掉不符合birthday="03-01"条件的记录,最后得到id=4;
- 存储引擎到表格中取出id=4的1条记录,返回给服务层;
- 服务层过滤掉不符合birthday="03-01"条件的记录,最后返回查询结果为id=4的1行记录。
启用索引下推后,把where条件由MySQL服务层放到了存储引擎层去执行,带来的好处就是存储引擎根据id到表格中读取数据的次数变少了。在上面这个例子中,没有索引下推时需要多回表查询2次。并且回表查询很可能是离散IO,在某些情况下,对数据库性能会有较大提升。
总结
相关推荐:
AI提炼主要内容:如何让信息更精准、高效、易懂,女军人ai
wordpress seo是什么,wordpress建站seo好做吗 ,学习图文ai
优化分析:提升企业效益的关键策略,山东大网站建设
seo网站代码是什么,网站专业术语中seo意思是什么 ,拟人ai制作
SEO合同:确保您网站优化成功的关键保障,微博营销推广规则最新
OpenAI网站崩溃原因:背后的技术与挑战,千牛Ai智投在哪里找
AI撰写工具的无限可能,让内容创作更高效、更精彩!
SEO售产-数字营销新战场,助力企业实现盈利增长,去哪找自贡网站建设
SEO动态:2025年SEO趋势与优化技巧解析,十堰外贸网站推广费用
如何用AI改文章,让写作更高效、精准,提升内容质量
ChatGPT不能用?揭秘你可能忽视的真相和解决方法,强国ai2022
SEO精通:让你的内容在搜索引擎中脱颖而出,跨境电商 推广营销
SEO优化中怎么找关键词:全面解析与实战技巧,ai2002.4.8
SEO资讯:最新趋势,提升网站排名,快速突破流量瓶颈,廊坊seo推广咨询服务
SEO挣钱之道:如何通过SEO实现网络盈利,宁晋网站建设商家
什么是seo如何进行seo,何谓seo ,红米的AI摄影什么意思
个性化广告:新时代营销的秘密武器,建设经营性网站怎么记账
优化综合:引领高效发展的智慧之道,电影营销的推广方式
文字写作AI生成工具:让创作更简单、更高效
怎么查一篇文章是不是AI写的?你需要这几个关键方法!
文章AI指令提升写作效率的智能助手
SEO开发:数字营销的核心驱动力,园区网站建设
ChatGPT免费用户每天的使用限制:如何高效利用,突破困境!,花花制作ai
seo都有什么意思,seo 啥意思 ,ai园林
代哥SEO-让您的网站迅速登顶搜索引擎的秘密武器,济南关键词的排名优化
ChatGPT网页版为什么不能用了?解析原因与解决办法,女人莫名其妙想ai
为什么关键词太少会影响你的网络营销效果?,陕西seo网站推广工具
ChatGPT充值打不开?这几招教你轻松解决问题!,免费的ai写作绘图
WPJam:打破网站管理的壁垒,打造极致用户体验,广东谷歌seo工具
SEO才能:提升网站排名,突破网络营销的核心竞争力,南宁本地seo营销公司
GPT在智能聊天机器人中的作用:重塑沟通体验,开创智能未来,百万级ai
SEO优化如何提升网站排名,驾驭搜索引擎流量,三亚网站推广方法
一键创作,助你轻松实现创意梦想,最低价刷粉网站推广
ChatGPT怎么找梯子:突破网络限制,轻松访问AI助手的终极指南,鬼灭之刃人物AI还原
ChatGPT页面空白不乏登录:让你秒变职场高手与生活智囊,百度ai 腾讯ai
SEO知道:让你的网站在搜索引擎中脱颖而出,水安建设集团网站
seo的推广工具,seo推广软件哪个好 ,国内ai写作论文怎么样
实用AI工具:提升效率、优化生活的科技利器
AI人工智能文章生成器写作新纪元
seo高手有什么条件,seo难上手吗 ,指南ai写作电力创新
SEO引擎优化方法-让你的网站流量暴增的实战指南,ai智慧树
怎么识别是AI写的文章
seo需要干什么,seo需要具备什么知识 ,ai梦境档案世岛大宅
seo适合看什么书,自学seo书籍推荐 ,ai少女 刻晴
如何利用AI生成高质量文章,提升写作效率与创意?
AI优化文章:如何利用人工智能提升写作效率和质量
SEO抓取:让您的网站从零到一的秘诀,佛山网站建设哪家效果好
ChatGPT:OpenAI的创新之作-一款颠覆传统的语言模型,ai球衣号
360关键:打造全方位安全保护,守护您的数字世界,ai乘bi
ChatGPT打开后空白:如何解决这个困扰并高效使用AI助手,ai四声怎么写