【大厂面试题系列】:什么是回表查询?如何避免?

本文介绍了Mysql InnoDB引擎的B+树索引类型,包括聚簇索引和非聚簇索引。回表查询发生在使用非聚簇索引时,若需额外获取未包含在索引中的字段,导致二次查询。为提高效率,引入了覆盖索引的概念,即索引包含了查询所需的所有字段,避免回表。优化查询性能,应尽量利用覆盖索引。
摘要由CSDN通过智能技术生成

在这里插入图片描述






说到回表查询,我们得现说说Mysql 的 InnoDB引擎的索引结构即 B+树

B+ 树 索引主要分为两个:聚簇索引 和 非聚簇索引

  • 聚簇索引:也就是平常我们说的主键索引,在 B+ 树中叶子节点存的是整行数据。

  • 非聚簇索引:非聚集索引即索引结构和数据分开存放的索引。


我们如果使用主键查找,那么使用的是聚簇索引,能直接获取到数据,而如果我们使用非聚簇索引查找,如果该索引不包含我们需要查找的的全部字段,那么就需要根据叶子节点存储的主键值在进行一次查找来找到我们需要的数据,这就是回表查询。



很明显,回表查询需要二次查询,那么效率肯定就会低,那么为了解决这个问题,我们可以使用覆盖索引

如果一个索引包含(或者说覆盖)所有需要查询的字段的值,我们就称之为“覆盖索引”。

如主键索引,如果一条 SQL 需要查询主键,那么正好根据主键索引就可以查到主键。

再如普通索引,如果一条 SQL 需要查询 name,name 字段正好有索引, 那么直接根据这个索引就可以查到数据,也无需回表。




觉得不错的小伙伴可以一键三连哦!,感谢支持!!!

更多面试题请移步 大厂面试题专栏


Java从入门到入坟学习路线目录索引


开源爬虫实例教程目录索引


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值