返回顶部
首页 > 资讯 > 数据库 >一文解答什么是MySQL的回表
  • 601
分享到

一文解答什么是MySQL的回表

MySQL回表回表 2022-11-13 14:11:30 601人浏览 八月长安
摘要

目录引言聚簇索引和非聚簇索引是什么?主键索引和非主键索引有什么区别?B-Tree 和 B+Tree 的简单理解如何避免回表?引言 简单来说,回表就是 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的回表的文章就介绍到这了,更多相关MySQL回表内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: 一文解答什么是MySQL的回表

本文链接: https://lsjlt.com/news/171689.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 一文解答什么是MySQL的回表
    目录引言聚簇索引和非聚簇索引是什么?主键索引和非主键索引有什么区别?B-Tree 和 B+Tree 的简单理解如何避免回表?引言 简单来说,回表就是 MySQL 要先查询到主键索引,...
    99+
    2022-11-13
    MySQL回表 回表
  • 一文解答为什么MySQL的count()方法这么慢
    目录前言count()的原理各种count()方法的原理允许粗略估计行数的场景必须精确估计行数的场景总结前言 mysql用count方法查全表数据,在不同的存储引擎里实现不同,myisam有专门字段记录全表的行数,直接读...
    99+
    2022-07-01
    MySQL的count()方法 MySQL count
  • mysql回表查询是什么,回表查询的使用
    目录聚集索引和非聚集索引聚集索引和非聚集索引的区别那回表是什么验证在说到什么是回表查询的时候,有两个概念需要先解释清楚:分别是聚集索引(聚簇索引)和非聚集索引(非聚簇索引) 聚集索引和非聚集索引 mysql规定,在使用I...
    99+
    2022-11-21
    mysql查询 mysql回表查询 回表查询
  • Python判断回文链表的方法是什么
    小编今天带大家了解Python判断回文链表的方法是什么,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“Python判断回文链表的方法是...
    99+
    2023-06-26
  • mysql回表查询优化的方法是什么
    MySQL回表查询是指在使用索引扫描后,仍需要通过主键再次访问表数据的操作。这种情况通常发生在需要查询的列不在索引中,或者是使用覆盖...
    99+
    2024-04-09
    mysql
  • win10为什么装不回win7的详细解答
    许多人选择升级,因为Win10系统具有快速启动功能,并且界面兼具Win8和Win7的特点,简单易用。但是win10系统的自动更新功能却让很多朋友反感,想装回win7却没有办法了,这是怎么回事呢?下面来看看具体的介绍吧。1、重启电脑时不停按F...
    99+
    2023-07-24
  • mysql新建一个表的方法是什么
    要在MySQL中创建一个新表,可以使用CREATE TABLE语句,语法如下: CREATE TABLE table_name ( ...
    99+
    2024-05-06
    mysql
  • 一文了解Hive是什么
    目录一、Hive介绍Hive的优缺点Hive架构Hive用户接口Hive元数据的三种存储模式Hive数据存储架构原理Hive文件格式Hive本质Hive工作原理Hive数据类型一、H...
    99+
    2024-04-02
  • 一文了解什么是JWT
    目录起源session认证token认证什么是JWTJWT的数据结构HeaderPayloadSignatureJWT的优点怎么使用JWT总结起源 需要了解一门技术,首先从为什么产生...
    99+
    2023-05-19
    JWT
  • 一文了解什么是TypeScript?
    目录1.JavaScript的问题2.TypeScript的优势3.TypeScript的缺点4.TypeScript的运行环境5.作用域问题前言: TypeScript是Java...
    99+
    2024-04-02
  • 一文说透什么是MySQL的预编译
    目录一、什么是mysql的预编译?二、 如何使用预编译?2.1 MySQL预编译的语法三、使用PreparedStatement进行预编译3.1 开启查询日志3.2 开启预编译功能3.3 cachePrepStmts参数...
    99+
    2024-04-02
  • javascript中什么是回文
    这期内容当中小编将会给大家带来有关javascript中什么是回文,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、说明回文是指一个单词或短语正向和反向阅读都是一样的。写一个函数来验证给定输入值是否是回文...
    99+
    2023-06-15
  • JavaScript中的回文数是什么
    本篇内容介绍了“JavaScript中的回文数是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • MySQL回表查询与索引覆盖的区别是什么
    这篇文章主要介绍“MySQL回表查询与索引覆盖的区别是什么”,在日常操作中,相信很多人在MySQL回表查询与索引覆盖的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL回表查询与索引覆盖的区别...
    99+
    2023-07-05
  • MySQL的表空间是什么
    今天我要跟你分享的话题是:“大家常说的表空间到底是什么?究竟什么又是数据表?” 这其实是一个概念性的知识点,当作拓展知识。涉及到的概念大家了解一下就好,涉及的参数,留个印象就好。 一、什么是表? 但凡是用过MySQL...
    99+
    2022-05-23
    MySQL MySQL 表空间
  • 阿里云老客户服务器是什么?一个全面的解答
    随着云计算技术的不断发展,越来越多的企业和个人开始考虑将业务上云。而在众多云服务商中,阿里云无疑是最具影响力的一家。作为一个阿里云的老客户,你可能已经对阿里云的各种产品和服务有所了解。然而,你是否了解阿里云的老客户服务器是什么?这篇文章将为...
    99+
    2023-10-30
    阿里 老客户 服务器
  • mysql insert返回值指的是什么
    本篇内容主要讲解“mysql insert返回值指的是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql insert返回值指的是什么”吧! ...
    99+
    2023-04-14
    mysql insert
  • MySQL多表的关系是什么
    MySQL多表的关系是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。多表之间的关系  表与表之间的关系,说的就是表与表之间...
    99+
    2024-04-02
  • mysql表空间指的是什么
    MySQL表空间是指存储表数据和索引的物理空间。在MySQL中,每个数据库都由一个或多个表空间组成,每个表空间又由一个或多个数据文件...
    99+
    2023-10-19
    mysql
  • 一文搞懂什么是MySQL前缀索引
    目录一、什么是前缀索引二、为什么要用前缀索引三、怎么创建前缀索引四、使用前缀索引需要注意的事项五、小结一、什么是前缀索引 所谓前缀索引,说白了就是对文本的前几个字符建立索引(具体是几个字符在建立索引时去指定),比如以产品...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作