中等 · 高频 5/5
为什么 MySQL 常用 B+ 树作为索引结构?
B+ 树高度低、磁盘 IO 次数少,叶子节点有序且通过链表连接,适合范围查询和排序,是关系数据库索引的折中选择。
简短答案
B+ 树高度低、磁盘 IO 次数少,叶子节点有序且通过链表连接,适合范围查询和排序,是关系数据库索引的折中选择。
详细解析
B+ 树的非叶子节点主要保存索引键,单页能容纳更多键,树高更低。叶子节点保存完整索引项并按顺序链接,所以等值查询、范围扫描和排序都比较友好。
面试回答模板
我会从磁盘 IO 和范围查询两点回答:B+ 树扇出高,树高低,查询路径稳定;叶子节点有序链表适合范围扫描。相比哈希索引,它更适合数据库常见的范围和排序需求。
易错点
- 只背结论,不解释原理和边界。
- 忽略真实生产环境中的容量、延迟、一致性和失败重试。
- 没有结合项目经验说明为什么这样设计。
常见追问
- 这个方案在高并发下有什么风险?
- 如果数据规模扩大十倍,你会如何调整?
- 线上出现异常时,你会先看哪些指标?