一文彻底理解索引下推

了解索引下推吗?二级索引取出的数据是依次回表还是一次回表?索引下推是为了什么发明的?

看完这个文章你将知道上面的问题。

索引下推的概念

MySQL5.6开始引入的一个特性,索引下推通过减少回表的次数来提高数据库的查询效率;

注意:索引下推是为了减少回表而发明的。

索引下推的产生一定围绕着回表,没有回表那就没必要产生索引下推,因为上面也说了索引下推的目的就是减少回表,而不是避免回表。(题外话:避免回表使用索引覆盖------建立覆盖索引)

索引下推的目的

索引下推的流程

实验

sql 复制代码
create table xiatui(
	id int PRIMARY Key,
	name varchar(10),
	age varchar(10),
	sex int,
	key inx_naa(name,age)
)

表中有一个二级索引

语句1:

sql 复制代码
explain
select * from xiatui where name like '%0' and age = '9802';

因为%在前面所以不会走索引,当然如果不是select * ,会使用二级索引的index。

可以看到extra=using where。这个意思就是在mysql在server层中进行了条件过滤。

语句2:

sql 复制代码
explain
select * from xiatui where name like '0%' and age = '9802';

extra=using index condition 发生了索引下推。

相关推荐
m0_7349497926 分钟前
怎么利用Navicat进行调整备份文件压缩等级_详细配置与操作步骤
jvm·数据库·python
T.i.s28 分钟前
番外续2-MIT-BIH Arrhythmia Database
数据库
有味道的男人1 小时前
AI 效率翻倍:对接 1688 拍立淘接口,商品全量信息一键抓取
数据库
m0_741173331 小时前
如何处理SQL中的NULL值_使用ISNULL或COALESCE函数
jvm·数据库·python
志栋智能1 小时前
超自动化巡检:解锁运维数据的深层价值
运维·服务器·数据库·自动化
m0_380113841 小时前
补单系统搭建及源码分享
数据库·spring boot·mybatis
步辞1 小时前
css伪类选择器-nth-child应用技巧_循环选择列表或表格行的实现方法
jvm·数据库·python
阿丰资源2 小时前
基于SpringBoot+MySQL的社区团购系统设计与实现(附源码+文档+数据库,直接运行)
数据库·spring boot·mysql
2301_803875612 小时前
Python怎么计算NumPy数组的切比雪夫距离_使用abs与max求解
jvm·数据库·python
还是阿落呀3 小时前
第二章 数据类型、表的约束
数据库·mysql