MySQL 索引为什么用 B+ 树?

发布于

一、B+ 树特点

  • 非叶子节点只存索引,不存数据,单节点可容纳更多索引,树更矮。
  • 叶子节点通过双向链表连接,范围查询效率高。
  • 所有数据都在叶子节点,查询路径长度一致,性能稳定。

二、为什么不用 B 树

B 树非叶子节点也存数据,导致单节点索引少、树更高、磁盘 I/O 多;范围查询需要中序遍历,效率低。

三、为什么不用哈希

哈希等值查询 O(1),但不支持范围查询、排序、模糊查询,数据库这些场景很多。

四、为什么不用红黑树

红黑树是二叉树,节点只有两个子节点,数据量大时树很高,磁盘 I/O 次数多。B+ 树是多叉,矮胖,适合磁盘存储。