news 2026/4/16 10:58:43

MySQL索引原理:B+树与聚簇索引

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL索引原理:B+树与聚簇索引

好题目,这个是MySQL 性能优化的核心基础👍
我用“原理 → 结构 → 工作方式 → 对比 → 常见面试点”的顺序,帮你把B+ 树 和 聚簇索引一次讲透。


一、为什么 MySQL 需要索引?

👉 本质一句话:
减少磁盘 I/O,把随机查找变成有序查找

没有索引:

  • 全表扫描(一行一行读)
  • 数据量大 → 慢到爆炸

有索引:

  • 像查字典一样,直接定位

InnoDB 存储引擎默认使用:

B+ 树索引


二、B+ 树是什么?

1️⃣ B+ 树的基本结构

B+ 树是多路平衡搜索树,特点:

  • 所有数据只存储在叶子节点
  • 非叶子节点只存索引(key)
  • 叶子节点之间通过双向链表连接
  • 树高度低(通常 2~4 层)

简化示意:

[10 | 20 | 30] / | \ [1,5,8] [10,15] [20,25,30] ↓ ↓ ↓ 数据 数据 数据

2️⃣ 为什么不用二叉树 / 红黑树?

结构问题
二叉树容易退化成链表
红黑树树高太高,磁盘 IO 次数多
Hash不支持范围查询

B+ 树优势

  • 分支多 → 树矮 → I/O 次数少
  • 叶子节点有序 → 范围查询极快

三、B+ 树与磁盘 I/O 的关系(重点)

  • MySQL 数据存储在磁盘
  • 一次 I/O 读取的是一整页(16KB)
  • 非叶子节点只存 key → 一个页能存成百上千个指针

👉一次 I/O = 一层树

例如:

  • 3 层 B+ 树 ≈ 3 次磁盘 I/O
  • 能索引上千万数据

四、什么是聚簇索引(Clustered Index)

1️⃣ 定义

聚簇索引:索引和数据“长在一起”

在 InnoDB 中:

  • 表的数据本身就是按主键顺序组织的一棵 B+ 树
  • 这棵树就是聚簇索引

📌一张表只能有一个聚簇索引


2️⃣ 聚簇索引的规则

InnoDB 聚簇索引选择顺序:

  1. PRIMARY KEY
  2. 第一个NOT NULL + UNIQUE索引
  3. 隐式生成row_id

3️⃣ 聚簇索引结构示意

聚簇索引 B+ 树(主键) ┌─────────────┐ │ key=10 │ │ 整行数据 │ └─────────────┘

👉叶子节点直接存整行数据


五、二级索引(非聚簇索引)

1️⃣ 二级索引结构

  • 也是 B+ 树

  • 叶子节点存:

    • 索引字段值
    • 主键值
二级索引 B+ 树 ┌─────────────┐ │ name=Tom │ │ PK=10 │ └─────────────┘

2️⃣ 回表查询(重点)

查询流程:

SELECT*FROMuserWHEREname='Tom';

步骤:

  1. name 二级索引找到主键值10
  2. 拿主键10回到聚簇索引
  3. 查整行数据

👉 这一步叫:回表


六、覆盖索引(性能优化利器)

如果查询字段都在二级索引中

SELECTnameFROMuserWHEREname='Tom';
  • 不需要回表
  • 直接返回结果

✅ 称为:覆盖索引


七、聚簇索引 vs 非聚簇索引总结

对比项聚簇索引二级索引
叶子节点整行数据主键
索引数量只能一个可多个
查询主键慢(需回表)
更新代价较大较小

八、为什么主键要“自增”?

不推荐:

UUID、随机字符串

问题:

推荐:

BIGINTAUTO_INCREMENT

优势:


九、面试高频一句话总结(背这个)

InnoDB 使用 B+ 树作为索引结构,数据按主键顺序存储在聚簇索引中。二级索引叶子节点存主键值,查询时需要回表,覆盖索引可避免回表。


如果你愿意,我还能继续给你讲:

你是准备面试,还是线上数据库性能优化

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

SQL窗口函数实践笔记

好,这个题目非常偏“进阶 SQL 面试/实战”,我就直接给你一份能抄走用、也能讲给面试官听的《SQL 窗口函数实践笔记》。 不灌水,**以“为什么 → 怎么写 → 什么时候用”**为主。 SQL 窗口函数实践笔记(Window Functions&#xff…

作者头像 李华
网站建设 2026/4/15 23:18:46

医疗器械有源加速老化验证

有源加速老化,是指通过在实验室环境中施加高于正常使用条件的加速应力,在较短的时间内模拟产品在正常储存和使用条件下数年的老化过程,在评估性能的可靠性、功能稳定性和安全性是否满足设计预期。当前,医疗器械有源加速老化国内外…

作者头像 李华
网站建设 2026/4/14 13:33:56

Esri获得ISO认证,强化数据安全承诺

国际标准确保ArcGIS具备信息安全防护与跨行业合规能力 位置智能领域的全球领导者Esri已获得ISO/IEC 27001:2022认证。该认证能够助力Esri的ArcGIS用户满足数据驻留和当地监管要求,同时确保Esri的安全实践符合国际标准化组织(ISO)制定的相关要求。 ISO/IEC 27001:202…

作者头像 李华
网站建设 2026/4/12 20:20:32

冥想第一千七百八十二天(1782)

1.周一了,2026.02.02天气很好,骑着自行车来上班了,项目上全力以赴的一天。 2.感谢父母,感谢朋友,感谢家人,感谢不断进步的自己。

作者头像 李华
网站建设 2026/4/16 3:15:42

大模型(LLM)完全指南:AI范式转变与认知基础设施详解

大模型(LLM)标志着AI范式的根本转变,作为通用智能引擎和认知基础设施,它正从工具化AI转向能力型AI,从单一任务建模走向统一底座,推动人机协作新模式。大模型不仅改变文本生成,更将重构组织认知机制与流程入口&#xff…

作者头像 李华
网站建设 2026/4/10 22:29:23

程序员参加护网月薪7w?

护网行动背景 什么是“护网行动”? 指挥机构∶由公安机关统一组织的"网络安全实战攻防演习"。 护网分为两级演习∶公安部对总部,省厅对省级公司。 什么是“实战攻防演习” 每支队伍3-5 人组成,明确目标系统,不限制…

作者头像 李华