iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mysql回表查询是什么,回表查询的使用
  • 424
分享到

mysql回表查询是什么,回表查询的使用

mysql查询mysql回表查询回表查询 2022-11-21 10:11:06 424人浏览 独家记忆
摘要

目录聚集索引和非聚集索引聚集索引和非聚集索引的区别那回表是什么验证在说到什么是回表查询的时候,有两个概念需要先解释清楚:分别是聚集索引(聚簇索引)和非聚集索引(非聚簇索引) 聚集索引和非聚集索引 Mysql规定,在使用I

在说到什么是回表查询的时候,有两个概念需要先解释清楚:分别是聚集索引(聚簇索引)和非聚集索引(非聚簇索引)

聚集索引和非聚集索引

Mysql规定,在使用InnoDB存储引擎的时候,必须且仅有一个聚集索引,非聚集索引也就是普通索引就看自己设置的有多少个了

聚集索引和非聚集索引的区别

1.聚集索引中的非叶子节点存储的是表的主键,非聚集索引的非叶子节点存储的是自己设置的索引字段对应的值(如果是联合索引,那就是联合索引的几个字段对应的值)

2.聚集索引的叶子节点,存储着当前表中每条记录的所有信息;非聚集索引的叶子节点,只存储当前记录对应的主键ID(也就是聚集索引的非叶子节点存储的值)

下面这张图是在网上找的一张截图

大致就是这个意思:左边的是主键索引(聚集索引),右边的是普通索引(非聚集索引)

mysql回表查询是什么,回表查询的使用

那回表是什么

如果是通过非主键索引进行查询,select所要获取的字段不能通过非主键索引获取到,需要通过非主键索引获取到的主键,从聚集索引再次查询一遍,获取到所要查询的记录,这个查询的过程就是回表

  • 通过执行计划的Extra字段的值,可以看到当前sql是否进行了回表
  • 如果Extra字段值为null,我不太确定是否是一定走回表的(待确认)
  • 但是如果Extra为Using index,则表示当前查询,通过索引覆盖就可以获取到当前select要的值,无需通过回表查询记录

验证

create TABLE hui_biao_test (id int not null auto_increment,name varchar(20),age int(11),first_name varchar(20),CONSTRaiNT pk_id PRIMARY KEY(id));
create index index_name on `hui_biao_test`(name);

这是我的sql,创建了一张表,

explain select id,name from `hui_biao_test` where name = '张三';
explain select name from `hui_biao_test` where name = '张三';
explain select name,age from `hui_biao_test` where name = '张三';

下面截图分别是这三个sql的执行计划,可以发现:

第一个sql和第二个sql的Extra是Using index,说明前两个sql是索引覆盖,无需回表即可查询到当前要用的数据;

但是第三个sql就不可以,因为有一个age字段,在name这个索引中,没有age字段的信息,只有id和name(name索引对应的B+树中的非叶子节点就是name字段的值,id就是叶子节点存储的元素),所以需要通过回表,去主键索引查询到对应的记录,然后获取到对应的age属性

mysql回表查询是什么,回表查询的使用

mysql回表查询是什么,回表查询的使用

mysql回表查询是什么,回表查询的使用

假如说我把name和age设置为联合索引,那最后一个sql的执行计划就会有变化

mysql回表查询是什么,回表查询的使用

可以看到,这个sql的执行计划中Extra就是Using index

mysql回表查询是什么,回表查询的使用

说明当前联合索引的非叶子节点中,存储的是联合索引对应的信息;仅通过联合索引就可以获取到select所需要的信息,这样,就无须再经过主键索引查询了

所以,这就是回表的概念

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

您可能感兴趣的文档:

--结束END--

本文标题: mysql回表查询是什么,回表查询的使用

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql回表查询是什么,回表查询的使用
    目录聚集索引和非聚集索引聚集索引和非聚集索引的区别那回表是什么验证在说到什么是回表查询的时候,有两个概念需要先解释清楚:分别是聚集索引(聚簇索引)和非聚集索引(非聚簇索引) 聚集索引和非聚集索引 mysql规定,在使用I...
    99+
    2022-11-21
    mysql查询 mysql回表查询 回表查询
  • mysql回表查询优化的方法是什么
    MySQL回表查询是指在使用索引扫描后,仍需要通过主键再次访问表数据的操作。这种情况通常发生在需要查询的列不在索引中,或者是使用覆盖...
    99+
    2024-04-09
    mysql
  • MySQL回表查询与索引覆盖的区别是什么
    这篇文章主要介绍“MySQL回表查询与索引覆盖的区别是什么”,在日常操作中,相信很多人在MySQL回表查询与索引覆盖的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL回表查询与索引覆盖的区别...
    99+
    2023-07-05
  • MySQL之单表查询、多表查询
    一、单表查询: 单个表的查询方法及语法顺序需要通过实际例子来熟悉 先将表数据创建下: mysql> create database singe_t1; # 建个数据库singe_t1 Query OK, 1 row aff...
    99+
    2023-01-31
    MySQL
  • mysql优化-减少查询回表次数和回表数据量
    减少数据回表常见的三种方式分别是1)查询条件使用聚集索引;2)使用索引下推;3)使用索引覆盖。 1 查询条件使用聚集索引-避免回表查询 按照索引使用数据结构B+树叶子结点是否包含表中全部字段,mysq...
    99+
    2023-09-16
    mysql 数据库 算法 sql
  • 【MySQL】MySQL表之联合查询(多表查询)
    📌前言:本篇博客介绍MySQL数据库的MySQL表之联合查询(多表查询),学习MySQL之前要先安装好MySQL,如果还没有安装的小伙伴可以看看博主前面的博客,里面有详细的安装教程。 那我们废话不多说,直接进入主体!...
    99+
    2023-08-16
    mysql 数据库 java
  • MySQL联合查询(多表查询)
    一、内连接 select *from 表1 [ inner | cross ] join 表2 [ on过滤条件 ] [ where查询条件 ] ; [ inner | cross ]: join 内连接关键字(必须要有...
    99+
    2023-09-14
    mysql 数据库 database
  • 连接查询(多表查询)——MySQL
    连接查询(多表查询) 又称多表查询,当查询的字段涉及多个表的时候,就要用到连接查询 分类: 为表起别名: 提高语句的简洁度区分多个重名字段注意:如果为表起了别名,则查询的字段就不能使用原来的别名去限定 内连接 查询A、B 交集部分数据 语...
    99+
    2023-08-18
    数据库 mysql 多表查询
  • MySQL回表查询与索引覆盖的区别
    目录回表查询索引覆盖索引下推回表查询 InnoDB索引分为两大类,一类是聚集索引(Clustered Index),一类是非聚集索引(Secondary Index) 聚集索引(聚簇...
    99+
    2023-03-20
    MySQL回表查询与索引覆盖
  • MYSQL 查询命令--单表查询
    基本查询语句 SELECT语句是最常用的查询语句,它的使用方式有些复杂,但功能是相当强大的。 SELECT语句的基本语法如下: select selection_list ...
    99+
    2024-04-02
  • MySQL多表查询的方法是什么
    这篇“MySQL多表查询的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL多表查询的方法是什么”文章吧。多...
    99+
    2023-07-04
  • php查询mysql有什么表
    php查询mysql有什么表?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。php查询mysql表1.使用php新建一个函数2.连接数据库,填写...
    99+
    2024-04-02
  • MySQL----多表查询
    MySQL----多表查询 多表关系表与表之间的联系:一对多(多对一)多对多一对一 多表查询多表查询的分类数据准备内连接外连接自连接联合查询子查询标量子查询列子查询行子查询表子查询 多表查询案例 多表关系 在进...
    99+
    2023-08-19
    mysql sql 数据库 多表查询 DB
  • mysql-多表查询
    准备工作:准备两张表,部门表(department)、员工表(employee)mysql> create database db2;Query OK, 1 row affected (0.00 sec)mysql> use d...
    99+
    2023-01-30
    mysql
  • 【MySQL】多表查询
    多表查询 多表关系 一对多(多对一)多对多一对一 一对多 案例:部门与员工 关系:一个部门对应多个员工,一个员工对应一个部门 实现:在多的一方建立外键,指向一的一方的主键 多对多 案例:学生与课程 关...
    99+
    2023-10-04
    mysql 数据库 sql
  • mysql 连表查询
    MySQL 连表查询可以通过使用 JOIN 语句来实现,基本语法如下: SELECT 列名 FROM 表1 JOIN 表2 ON 表1.列名 = 表2.列名; 其中,JOIN 为关键字,表示连...
    99+
    2023-10-05
    mysql 数据库 sql
  • Mysql 复杂查询丨联表查询
    💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! JOIN(联表查询) 联表查询(Join)是一种在数据库中使用多个表进行关联查询的操...
    99+
    2023-08-16
    mysql 数据库
  • MySQL多表查询
    文章目录 一、什么是多表查询1、概述2、笛卡尔积现象 二、多表查询的分类1、等值连接 vs非等值连接2、自连接 vs 非自连接3、内连接 vs 外连接4、满外连接(FULL OUTE...
    99+
    2023-09-01
    mysql 数据库 sql
  • mysql-单表查询
    语法:一、单表查询的语法    SELECT 字段1,字段2... FROM 表名        &n...
    99+
    2023-01-30
    mysql
  • MySQL --- 多表查询
    多表查询、事务、以及提升查询效率最有手段的索引  一. 多表查询 1.1 多表查询 --- 概述 1.1.1 数据准备 将资料中准备好的多表查询数据准备的SQL脚本导入数据库中。 部门表: 员工表: 1.1.2 介绍 多表查询:指从多张表...
    99+
    2023-09-02
    mysql 数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作