news 2026/5/13 5:09:44

回表查询、覆盖索引

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
回表查询、覆盖索引

一、回表查询

如果索引列在select所需获得的列中或者根据一次索引查询就能获得记录就不需要回表,如果select所需获得列中有大量的非索引列,索引就需要到表中找到相应的列的信息,这就是回表。

二、InnoDB聚集索引

聚集索引是一种特殊的索引类型,它将数据行的物理存储顺序与索引键的逻辑顺序保存一致。在InnoDB中,表数据本身就是按照聚集索引组织的,这是与MyISAM等存储引擎的根本区别。数据行存储在索引的叶子节点中,表数据在磁盘上按照聚集索引键值的顺序存储,每个InnoDB表必须有且只有一个聚集索引。

  • 聚集索引的确定规则【按以下优先选择】
  1. 主键:显示定义的主键作为聚集索引
  2. 第一个非空唯一索引:如果没有主键
  3. 内部生成的隐藏列:如果以上都没有,InnoDB自动生成6字节的ROW_ID作为聚集索引
  • 物理存储结构

聚集索引B+树结构:
┌─────────────────┐
│ 根节点(非叶子) │ ← 存储索引键和指针
├─────────────────┤
│ 中间节点(非叶子) │ ← 存储索引键和指针
├─────────────────┤
│ 叶子节点(存储数据) │ ← 存储完整的行数据
└─────────────────┘

三、二级索引(非聚类索引)的工作原理

在InnoDB中,所有非聚类索引都称为二级索引,其叶子节点不包含完整数据行,而是存储对应的主键值。

-- 查询语句 SELECT * FROM users WHERE name = 'Alice'; -- 执行步骤: -- 1. 在idx_name索引树中查找'Alice' → 获得主键id值 -- 2. 使用该id值到聚集索引中查找完整数据行 ← 这就是"回表查询"

四、覆盖索引

只需要在一棵索引树上就能获取SQL所需的所有列数据,无需回表,速度更快。explain的输出结果Extra字段为Using index时,能够触发索引覆盖。

实现索引覆盖的方法常有:将被查询的字段,建立到联合索引里去。

create table user ( id int primary key, name varchar(20), sex varchar(5), index(name) )engine=innodb;

当我们使用如下代码时

select id,name from user where name='shenjian';

能够命中name索引,索引叶子节点存储了主键id,通过name的索引树即可获取id和name,无需回表,符合索引覆盖,效率较高。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/12 11:48:46

ARP扫描工具arp-scan:快速发现局域网设备完整指南

ARP扫描工具arp-scan:快速发现局域网设备完整指南 【免费下载链接】arp-scan The ARP Scanner 项目地址: https://gitcode.com/gh_mirrors/ar/arp-scan ARP扫描工具arp-scan是一款专为网络管理员和安全工程师设计的强大局域网设备发现工具。通过利用ARP协议的…

作者头像 李华
网站建设 2026/5/9 2:03:58

Rust语言+Seed-Coder-8B-Base:系统级编程的智能未来

Rust语言Seed-Coder-8B-Base:系统级编程的智能未来 在现代软件工程中,系统级开发正面临前所未有的挑战——既要保证极致性能与资源效率,又要应对日益复杂的并发逻辑和内存管理。尤其是在操作系统、嵌入式设备、区块链节点等关键场景下&#x…

作者头像 李华
网站建设 2026/5/9 0:36:59

ParsecVDD虚拟显示器完整解决方案:多屏工作新体验

ParsecVDD虚拟显示器完整解决方案:多屏工作新体验 【免费下载链接】parsec-vdd ✨ Virtual super display, upto 4K 2160p240hz 😎 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd 在当今数字化工作环境中,单一显示器已成为…

作者头像 李华
网站建设 2026/5/9 2:20:23

明日方舟UI定制完整指南:从零开始打造专属游戏界面

明日方舟UI定制完整指南:从零开始打造专属游戏界面 【免费下载链接】arknights-ui H5 复刻版明日方舟游戏主界面 项目地址: https://gitcode.com/gh_mirrors/ar/arknights-ui 想要为《明日方舟》打造个性化的游戏界面体验吗?本教程将带您深入了解…

作者头像 李华
网站建设 2026/5/12 0:01:47

FLUX.1-dev多模态模型深度解析:图像生成、编辑与视觉问答三合一

FLUX.1-dev多模态模型深度解析:图像生成、编辑与视觉问答三合一 在数字内容爆炸式增长的今天,用户对AI创作工具的期待早已超越“能画图”这一基本要求。我们不再满足于一个只能根据提示词生成静态图像的黑箱系统,而是渴望一种真正理解语义、支…

作者头像 李华
网站建设 2026/5/12 14:54:27

Git Stash管理多版本实验代码:FLUX.1-dev训练过程中的最佳实践

Git Stash管理多版本实验代码:FLUX.1-dev训练过程中的最佳实践 在深度学习模型的开发现场,尤其是像 FLUX.1-dev 这类前沿文生图模型的训练过程中,你是否经历过这样的场景?刚写完一半的提示词解析增强逻辑,突然收到消息…

作者头像 李华