线上接口突然变慢?慢查询日志暴涨?CPU 飙升?90% 的数据库性能问题都是索引问题。从 B+ 树底层原理到生产实战,一篇讲透 MySQL 索引优化。
一、B+ 树索引原理
1.1 为什么是 B+ 树
B 树(B-Tree):
每个节点存数据 → 一个节点能存的 key 少 → 树更高 → 磁盘 IO 更多
B+ 树(B+ Tree):
非叶子节点只存 key → 一个节点能存更多 key → 树更矮 → IO 更少
数据只存叶子节点 → 叶子节点用双向链表连接 → 范围查询极快
MySQL InnoDB 选择 B+ 树的原因:
1. 磁盘 IO 少(树矮,通常 3-4 层即可存千万级数据)
2. 范围查询快(叶子节点链表,一次定位后顺序扫描)
3. 查询稳定(每次都查到叶子节点,时间复杂度稳定 O(logN))
2026/6/27大约 10 分钟