LOADING

加载过慢请开启缓存 浏览器默认开启

b树和b+树的区别

2025/4/11

b树

b树的叶子节点和非叶子节点都存储数据, 但是b树的高度比较高, 因为他的非叶子节点也存数据了,因此查询效率不如b+树.
B+树叶子节点采用的是双链表连接,适合 MySQL 中常见的基于范围的顺序查找,而 B 树在进行范围查询时需要进行中序遍历,性能较差。

b+树

b+树的叶子节点存储数据, 非叶子节点存储索引.查询效率较均匀,因为非叶子不存数据,所有查到的数据都在叶子节点,而b树的查询效率不均匀

当数据量比较大时,相对于B树,B+树的层高更少,io次数少,查找效率也就更高,因为b树叶子节点也存数据

B+树和B树有什么不一样,B+树的叶子节点和非叶子节点有什么不一样,非叶子节点会不会存数据?

检索路径:B树在查找数据时,可能在非叶子节点找到目标数据,路径长度不固定。即查找时可以在任意一个节点终止。B+树中所有数据都在叶子节点,查找数据时必须走到叶子节点,路径长度固定(均等)。即查找总是要到叶子节点结束。

叶子节点结构:B树中叶子节点之间没有特别的链接,彼此独立。B+树中叶子节点通过指针连接,形成一个有序链表,便于范围查询和顺序访问。
非叶子节点内容:B树中非叶子节点存储数据和索引。B+树中非叶子节点只存储索引,不存储实际数据。因此,当数据量比较大时,相对于B树,B+树的层高更少,查找效率也就更高。

B+树叶子节点采用的是双链表连接,适合 MySQL 中常见的基于范围的顺序查找,而 B 树在进行范围查询时需要进行中序遍历,性能较差。