mysql01
MySQL 索引底层(三):写路径、页分裂与索引失效实战
索引不是免费的。这篇从写入侧讲起:顺序追加和随机插入在 B+ 树上的两副面孔、页分裂怎么发生、change buffer 攒的是什么;然后用一组 EXPLAIN 输出对照五个最常见的索引失效场景,每个给反例和改法。
2026-09-07 19:12:391 阅读
共 3 篇文章
索引不是免费的。这篇从写入侧讲起:顺序追加和随机插入在 B+ 树上的两副面孔、页分裂怎么发生、change buffer 攒的是什么;然后用一组 EXPLAIN 输出对照五个最常见的索引失效场景,每个给反例和改法。
InnoDB 的表本身就是一棵 B+ 树——这是理解一切索引行为的总开关。这篇拆开聚簇索引和二级索引的叶子存了什么,回表的成本从哪来,联合索引 (a,b,c) 的列顺序在树里怎么排,以及索引下推省了哪一步。
从一条慢查询出发,把哈希表、有序数组、二叉树、B 树逐个放到索引这个位置上称重,看 B+ 树凭什么胜出;再打开 InnoDB 的 16KB 页算一笔账,解释"2000 万行、3 层树"这个数字的来历。