为什么使用B+树不使用红黑树、二叉树?
为什么使用B+树不使用红黑树、二叉树?
提示
题眼: 多叉树的优势,范围查询,聚集索引。
红黑树和二叉树是每个节点最多有两个子节点的树结构,红黑树是二叉树的优化,增加了颜色属性;他们有以下区别:
- 查询效率不同:当数据量足够大时,B+树的树比红黑树和二叉树低,需要更少的磁盘I/O操作,查询效率更高。
- B+树更适合范围查询:B+树的叶子节点是一个有序链表,适合范围查询。
- B+树实现了聚集索引,数据和索引放在一起,查询效率高。
重要
参考答案:
主要还是适用的场景不同。红黑树本身也是一种二叉树,而B+树是多叉树,当数据量比较大的时候,他们的树高差距会非常大,通常在MySQL里,B+树只有3-4层高度,这样子可以有效降低磁盘的IO操作,查询效率更高。除此之外,B+树还有其他的优势,比如它可以实现聚集索引,将数据和索引放在一起,便于查询,而且B+树的底层是一个有序的链表,这样非常适合范围查询。红黑树和二叉树,查找单个数据的时候效率比较好,但在MySQL的场景里,还是不太适合。
