当前位置:网站首页>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回表指的是什么”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
边栏推荐
猜你喜欢
jmeter distributed stress test
Modulo operation (MOD)
The Beijing E-sports Metaverse Forum was successfully held
typescript51 - basic use of generics
【性能优化】MySQL性能优化之存储引擎调优
Demand analysis of MES management system in electronic assembly industry
GeoAO:一种快速的环境光遮蔽方案
Apache DolphinScheduler新一代分布式工作流任务调度平台实战-中
一文参透分布式存储系统Ceph的架构设计、集群搭建(手把手)
数据库扩容也可以如此丝滑,MySQL千亿级数据生产环境扩容实战
随机推荐
boot issue
无代码7月热讯 | 微软首推数字联络中心平台;全球黑客马拉松...
The problem of disorganized data output by mnn model
第1章:初识数据库与MySQL----MySQL安装
typescript51-泛型的基本使用
Justin Sun: Web3.0 and the Metaverse will assist mankind to enter the online world more comprehensively
虚拟机CentOS7中无图形界面安装Oracle
C 学生管理系统_添加学生
Analysis: What makes the Nomad Bridge hack unique
Google Earth Engine - Calculates the effective width of rivers using publicly available river data
corn表达式 具体详解与案例
C 学生管理系统 显示链表信息、删除链表
outputBufferIndex = mDecode.dequeueOutputBuffer(bufferInfo, 0) 一直返回为-1
Node.js的基本使用(三)数据库与身份认证
Tanabata festival coming, VR panoramic look god assists for you
2023年航空航天、机械与机电工程国际会议(CAMME 2023)
WMS仓储管理系统能解决电子行业哪些仓库管理问题
GeoAO:一种快速的环境光遮蔽方案
小米--测试开发
新一代服务网关Gateway的实践笔记