当前位置:网站首页>MySQL回表指的是什么
MySQL回表指的是什么
2022-08-04 00:52:00 【亿速云】
MySQL回表指的是什么
本篇内容主要讲解“MySQL回表指的是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL回表指的是什么”吧!
引言
简单来说,回表就是 MySQL 要先查询到主键索引,然后再用主键索引定位到数据。
下面,对一些问题进行分析与回答:
什么是聚簇索引?什么是非聚簇索引?
为什么回表要先查到主键索引?
主键索引和非主键索引有什么区别?
如何避免回表?
聚簇索引和非聚簇索引是什么?
MySQL 的索引有不同的角度的分类方式,例如:按数据结构分、按逻辑角度分、按物理存储分。
其中,按物理存储分有两种索引:聚簇索引和非聚簇索引。
简单来说,聚簇索引是主键索引。
主键索引之外的就是非聚簇索引,非聚簇索引又叫辅助索引或者二级索引。
主键索引和非主键索引有什么区别?
相同点:都使用的是 B+Tree 。
不同点:叶子节点存储的数据不同
主键索引的叶子节点存储的是一行完整的数据;
非主键索引的叶子节点存储的是主键值。叶子节点不包含记录的全部数据,非主键的叶子节点除了用来排序的 key 还包含一个书签(bookmark),其中存储了聚簇索引的 key。
那么这两种索引在使用方面上有什么区别呢?
使用主键索引查询:
# 主键索引的的叶子节点存储的是**一行完整的数据**,# 所以只需搜索主键索引的 B+Tree 就可以轻松找到全部数据select * from user where id = 1;
使用非主键索引查询:
# 非主键索引的叶子节点存储的是**主键值**,# 所以MySQL会先查询到 name 列的索引的 B+Tree,搜索得到对应的主键值# 然后再去搜索该主键值查询主键索引的 B+Tree 才可以找到对应的数据select * from user where name = 'Jack';
可以看出使用非主键索引要比主键索引多使用一次 B+Tree。
B-Tree 和 B+Tree 的简单理解
理解聚簇索引和非聚簇索引的关键在于 B+Tree 的理解。
用一幅图来表示,其它的就不再过多解释了:
这里只是简单介绍一下 B-Tree 和 B+Tree 的区别:
B+树中只有叶子节点会带有指向记录的指针,而B树则所有节点都带有,在内部节点出现的索引项不会再出现在叶子节点中。
B+树中所有叶子节点都是通过指针连接在一起,而B树不会。
如何避免回表?
使用覆盖索引,所谓覆盖索引就是指索引中包含了查询中的所有字段,这种情况下就不需要再进行回表查询了。
到此,相信大家对“MySQL回表指的是什么”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
边栏推荐
- 七夕佳节即将来到,VR全景云游为你神助攻
- Spinnaker调用Jenkins API 返回403错误
- 取模运算(MOD)
- Justin Sun was invited to attend the 36氪 Yuan Universe Summit and delivered a keynote speech
- 【虚拟化生态平台】虚拟化平台esxi挂载USB硬盘
- Eight things to pay attention to in spot silver
- Nanoprobes Alexa Fluor 488 FluoroNanogold 偶联物
- outputBufferIndex = mDecode.dequeueOutputBuffer(bufferInfo, 0) 一直返回为-1
- NLP resources that must be used for projects [Classified Edition]
- Getting started with MATLAB 3D drawing command plot3
猜你喜欢
【链路聚合原理及配置】
分布式事务框架 seata
动态内存二
114. 如何通过单步调试的方式找到引起 Fiori Launchpad 路由错误的原因
ES6高级-迭代器与生成器的用法
Vant3—— 点击对应的name名称跳转到下一页对应的tab栏的name的位置
LYVE1抗体丨Relia Tech LYVE1抗体解决方案
The Beijing E-sports Metaverse Forum was successfully held
2022-08-03: What does the following go code output?A: 2; B: 3; C: 1; D: 0.package main import "fmt" func main() { slice := []i
How to find the cause of Fiori Launchpad routing errors by single-step debugging
随机推荐
Nanoprobes Mono- Sulfo -NHS-Nanogold的使用和应用
JVM垃圾回收总结(未完待续)
浅谈我国产业园区未来的发展方向
第1章:初识数据库与MySQL----MySQL安装
《The Google File System》新说
2022年8月份DAMA-CDGA/CDGP数据治理认证招生简章
NLP resources that must be used for projects [Classified Edition]
查看CUDA、pytorch等的版本号
dynamic memory two
Read FastDFS in one article
C 学生管理系统_添加学生
typescript54-泛型约束
中原银行实时风控体系建设实践
手撕Gateway源码,今日撕工作流程、负载均衡源码
corn表达式 具体详解与案例
教你如何定位不合理的SQL?并优化之
【性能优化】MySQL性能优化之存储引擎调优
【详细教程】一文参透MongoDB聚合查询
114. How to find the cause of Fiori Launchpad routing error by single-step debugging
It will invest about 200 billion US dollars in the United States in 20 years, and Samsung Electronics looks so handsome