问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

回表查询与索引覆盖

发布网友 发布时间:2022-10-18 09:46

我来回答

1个回答

热心网友 时间:2023-11-11 18:21

首先需要从InnoDB的索引实现说起,InnoDB有两类索引:
1、聚集索引(clustered index)
2.、普通索引,也叫二级索引(secondary index)

聚集索引的叶子节点储存的是行记录,且每张表有且仅有一个聚集索引:
(1)、如果表中定义了主键,那么该主键索引就是聚集索引。
(2)、如果表中没有定义主键,那么从第一个字段开始往后,第一个 not null的unique列为聚集索引。
(3)、如果(1)、(2)都不满足,那么InnoDB会创建一个隐藏的row-id作为聚集索引。
所以,主键查询特别的快,直接定位到行记录。

普通索引的叶子节点保存的是索引字段值和主键值,并不是完整的行记录。

假设我们现在有一张表:
表结构为 t (id PK , name KEY , sex , flag), 其中id为聚集索引,name为普通索引。
表中有四条这样的数据:
(1, shenjian, m, A)、(3, zhangsan, m, A)、(5, lisi, m, A)、(9, wangwu, f, B )

上图分别为它们在索引中的储存状态:
(1)、聚集索引的叶子节点储存了整个行记录。
(2)、普通索引只储存了name字段值和id值。

在假设现在有一条查询sql select * from t where name = 'lisi'; 索引是怎么执行的呢?

mysql官方没有对此进行定义,但是有这方面的概述: 只需要通过一颗索引树,就可以获取sql所需要的列数据,无需回表,速度更快。
仍旧选择之前的表,但是我们的sql换成: select id,name from t where name = 'lisi'; ,查看explain计划:

可以看到,命中了name索引,索引储存了id和name,所以 Extra 项的值为 Using index ,无需回表查询,符合索引覆盖,效率高。

另外一条sql : select id,name,sex from t where name = 'lisi'; ,查看explain计划:

可以看到,同样的,也命中了name索引,但是索引的叶子节点并没有储存sex字段值,所以 Extra 项的值为 Using index condition ,需要回表查询通过聚集索引获取到sex的值,不符合索引覆盖,效率相对较低。
解决的办法是,将name索引修改为name、sex的组合索引,这样第二条sql查询就也满足索引覆盖的要求了。

文章摘取出处: https://www.cnblogs.com/myseries/p/11265849.html

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
挖掘机上的字母标志是什么牌子的挖机 中国市场上挖掘机那国技术占优 微信个人标签经典短句最精辟的微信个性签名 肚子总是不消化,吃完东西不想上厕所。涨涨的 最近老是肚子疼,但疼一会儿就不疼了,就是不想上厕所,有时候五六天都没... ...但是不疼几乎每天早上都会不舒服,也不想上厕所,就是弄的你睡不着觉... 我的肚子老疼,但不是很想上厕所,最近有点拉肚子,可是一吃凉的东西肚子... 因为节目结缘却最终分开,姚沐希彭措的分手,暗示了娱乐圈什么问题? x79支持什么显卡 四叶草是不是三叶草? 阿里三面:MySQL回表的性能伤害有多大? “重”字粤语有三声,那么国之重器的重读什么声?1重量,2重叠,3稳重,与那个同音? 同音字组词:虫重 崇有哪些同音字 重西的同音字 重同音字 对于Java中包的运用以及路径还是有几点不明白,我用的DOC 窗口+notepad做的练习,书上这块也讲的少 java工程里头直接建的包路径和在src下建的包路径有什么区别 java包路径的问题 什么情况下用“票据制单”生成凭证 春山如黛草如烟是爱过吗 我自己是开了好几家公司,比较有钱,手上有两千多万吧,而且我也偶尔帮助一下穷人,可是 Windows 10 深度美化有什么技巧 佛教哲理的句子 绿萝吊兰怎么养 绿萝吊兰养植方法 熊猫TV更换视频清晰度 火灾逃生的自救方法 冬天五针松室外移栽能活吗 如何让植物安全过冬 都29号了美韩军演都两天为什么中国还无动于衷 堆表、回表、索引覆盖、主键索引、聚集索引等一些知识点 mysql分表真得能提升查询性能吗 java 读取资源文件为什么就是读不到呢?再根目录下啊,真是不解,求解答,30分,谢谢,下图 梦想七年级作文 新奔驰GLA申报图曝光,将配1.3T动力,表现不输1.6T! 环保出行之选 五款豪华入门绿牌车 亲们,那个酒精能洗瓷砖上的水锈么, 一道初三化学题:“酒精能洗去瓷砖上的水锈”的说法为什么是错的? 要一个QQ卡卡号和密码要有钱的急!!! 我QQ号被盗了怎么办啊,密保手机号和密码也被换了,账号价值10000 专门用来打游戏的号_百度问一问 格子连衣裙可以怎么搭配 有哪些赏叶植物是抗冻的,最低气温多少 Cf爆破开始的英文好像有个Ok什么的,求告诉 请问CF爆破模式每局刚开说的那些英文是什么意思? CF所有模式的任务开始和结束的英文。还有杀敌的英文是什么啊?要全的~ 爆破的英文意思是什么? 不要CF爆破模式的意思。只要爆破两个字的英文意思! 穿越火线爆破模式中胜利时说的英语是什么?要完整的 ipadmini5?两千出头性价比最高的平板? 还有哪些植物能战胜风雪 我用的是尼康D90相机,请问可不可以设置拍摄照片的尺寸啊,谢谢!