MySQL 索引为什么用 B+ 树?
MySQL 面试题发布于
一、B+ 树特点
- 非叶子节点只存索引,不存数据,单节点可容纳更多索引,树更矮。
- 叶子节点通过双向链表连接,范围查询效率高。
- 所有数据都在叶子节点,查询路径长度一致,性能稳定。
二、为什么不用 B 树
B 树非叶子节点也存数据,导致单节点索引少、树更高、磁盘 I/O 多;范围查询需要中序遍历,效率低。
三、为什么不用哈希
哈希等值查询 O(1),但不支持范围查询、排序、模糊查询,数据库这些场景很多。
四、为什么不用红黑树
红黑树是二叉树,节点只有两个子节点,数据量大时树很高,磁盘 I/O 次数多。B+ 树是多叉,矮胖,适合磁盘存储。