为什么 MySQL 采用 B+ 树作为索引?

为什么 MySQL 选择 B+ 树作为索引?

关于 MySQL 的 B+ 树,我们经常会被问这样的问题:

  • 为什么索引用 B+ 树,而不用红黑树?
  • 为什么索引用 B+ 树,而不用 B 树?
  • 为什么索引用 B+ 树,而不用哈希表?
  • 为什么索引用 B+ 树,而不用数组?
    ………………

你有没有想过,为什么 MySQL 数据库选择 B+ 树作为索引数据结构?这可不是随便选的,背后蕴藏着不少秘密。

要解释这个问题,其实不单单要从数据结构的角度出发,还要考虑磁盘 I/O 操作次数,因为 MySQL 的数据是存储在磁盘中的嘛。

MySQL 索引需要满足的条件

需要满足两点:

  • 尽可能少的磁盘 I/O 操作
  • 既要能高效的查询某一条记录,也要高效的进行范围查询

为什么索引用 B+ 树,而不用红黑树?

红黑树本质上是二叉树,而 B+ 树是多叉树,这样在存储相同数量量的情况下,红黑树的树会比 B+ 树的树高,由于 InnodB 引擎的数据都是存储在磁盘上的,如果树的高度越高,意味着磁盘 I/O 就越多,这样就会影响查询性能。
所以,InnodB 引擎选择了 B+树作为索引,而不是红黑树。

为什么索引用 B+

你可能感兴趣的:(MySQL,mysql,数据库)