数据库 · 单选题 · 第 33 题
计算机基础面试八股 · 第 33 题
MySQL InnoDB 的索引采用 B+ 树而不是 B 树,主要原因是?
- AB+ 树在插入数据时节点永远不会分裂,所以写入性能比 B 树高出很多倍
- BB+ 树把所有行数据都放在根节点里,一次磁盘 IO 就能取到所有需要的数据
- CB 树只支持范围查询而不支持等值查询,不能满足 WHERE 条件中的等值过滤
- D非叶子节点不存数据,扇出大、树更矮;叶子节点用链表相连,便于范围查询
答案
D D. 非叶子节点不存数据,扇出大、树更矮;叶子节点用链表相连,便于范围查询
解析
磁盘 IO 以页为单位,非叶子节点不放数据,一页就能容纳上千个键,三四层的 B+ 树就能索引上千万行,查询只需几次 IO。数据全部在叶子节点并用双向链表相连,范围扫描顺着链表走即可。B+ 树插入时同样会发生页分裂,这也是推荐使用自增主键的原因。