什么是回表查询 ?

简介: MySQL中InnoDB引擎的聚簇索引将数据与索引存储在一起,每表仅一个;二级索引则分离存储,叶子节点保存主键值。回表查询需先查二级索引再查聚簇索引,性能较低。优化方式包括:使用主键查询、创建联合索引实现覆盖索引、利用MySQL 5.6+的索引下推功能,减少回表次数,提升查询效率。(238字)
  • 必答内容:

在MySQL默认的InnoDB存储引擎中,有两类索引,分别是:聚簇索引和二级索引。 聚簇索引,他的特点呢就是数据与索引存放在一块儿,B+tree索引结构的叶子节点保存了整行数据,而且在一张表中,聚簇索引有且仅有一个,默认主键索引就是聚簇索引。二级索引,指的是数据和索引分开存储,B+tree的叶子节点保存对应的主键,二级索引在一张表中可以有多个。

所谓回表查询,就指的是,在执行这条SQL语句的时候,先根据二级索引去检索出对应的主键值;然后再根据主键值,到聚簇索引中查询出对应的数据,这个过程就叫回表查询。 所以回表查询,是需要扫描两次索引的,性能相对来说会差一些。

  • 进阶内容:

所以,在项目开发中,我们进行SQL优化的时候,如果需求允许的情况下,尽量避免回表查询,主要从以下几个方面来做:

1). 业务允许的情况下,尽可能根据主键查询,使用聚集索引-避免回表查询。

2). 为表中的字段,根据业务需求创建合适的联合索引,查询时使用索引覆盖-避免回表查询。

3). 使用索引下推,减少回表查询的次数。【索引下推,是mysql5.6之后提供的功能】

  • 可能继续发问的问题:

你刚才提到索引下推,简单聊聊什么是索引下推?

索引下推(Index Condition Pushdown),是MySQL5.6后提供的功能,指的是在多条件查询SQL执行时,提前判断对应的搜索条件是否满足,满足了再去回表(就是将本应该在 server 层进行筛选的条件,下推到存储引擎层来进行筛选判断,这样能有效减少回表),通过减少回表次数进而提高查询效率。

相关文章
|
存储 关系型数据库 MySQL
MySQL中的回表
MySQL中的回表
|
NoSQL 关系型数据库 MySQL
数据库常用命令汇总
数据库常用命令因数据库的类型(如关系型数据库、非关系型数据库等)和具体的产品(如MySQL、Oracle、SQL Server、MongoDB等)而异。
758 4
|
网络协议 Linux 网络架构
【Cisco Packet Tracer】IP数据包的分组转发与路由实验
【Cisco Packet Tracer】IP数据包的分组转发与路由实验
590 1
|
Java Apache
JAVA文件的MD5获取方法
JAVA文件的MD5获取方法
1418 0
|
4月前
|
缓存 NoSQL 算法
【Redis】Redis——过期键删除策略、内存淘汰8种策略、LRU/LFU实现
Redis过期删除与内存淘汰是两大核心内存管理机制:前者按TTL自动清理失效键(惰性+定期组合),后者在`maxmemory`超限时主动淘汰键(8种策略,含LRU/LFU近似实现)。二者目标、触发条件与作用范围截然不同,需精准区分与配置。
|
9月前
|
关系型数据库 数据库 文件存储
告别数字麻木,重拾消费感知:ezBookkeeping —— 您的轻量自托管记账伴侣
在数字支付时代,金钱变得抽象,ezBookkeeping 让消费重新可感。这款开源、自托管的轻量记账工具,支持 Docker 部署,兼顾隐私与易用,助你找回对支出的真实掌控,适合树莓派到 NAS 各类设备。
1153 0
告别数字麻木,重拾消费感知:ezBookkeeping —— 您的轻量自托管记账伴侣
|
9月前
|
Java
synchronized 锁升级
synchronized锁有偏向锁、轻量级锁、重量级锁三级,性能依次降低。单线程用偏向锁;交替加锁无竞争升级为轻量级锁;存在竞争则升级为重量级锁。自Java 6支持锁升级,Java 15起偏向锁被废弃,因性能收益有限且可能负优化。
|
9月前
|
设计模式 uml Python
责任链模式
责任链模式是一种行为型设计模式,将请求的发送者与接收者解耦,通过构建处理对象链,使多个对象有机会处理请求。适用于需多级处理的场景,如权限检查、日志记录等,提升系统灵活性与可扩展性。(238字)
|
人工智能 自然语言处理 算法
GPT-4 Turbo 和 GPT-4 的区别
GPT-4 vs GPT-4 Turbo: 探索OpenAI的顶级模型,GPT-4以其出色的文本生成和理解闻名,适合高端内容需求,但成本高;GPT-4 Turbo,优化版,提供相似性能但更高效、经济,适用于大规模商业应用,尤其在速度和资源效率上展现优势。用户可根据质量、效率和成本需求选择合适模型。
800 4
|
存储 SQL 关系型数据库
MySQL语句详解:从基础到进阶的全面指南
MySQL语句详解:从基础到进阶的全面指南

热门文章

最新文章