7.B树和B+树的区别
1.
B树的叶子节点不包含指针
B+树叶子节点包含指针
2.
B树所有节点不重复,都存储data
B+树重复,非叶子节点不存储data,只存储索引(冗余),可以放更多的索引,叶子节点包含所有的索引字段且存储data
3.
B+树的优势
b树在查询时的比较次数并不比二叉树少,尤其是节点中的数非常多时,但是内存的比较速度非常快,耗时可以忽略,所以只要树的高度低,IO少,就可以提高查询性能,这是b树的优势之一。
还要满足查找树的性质,所以对元素进行调整以满足大小关系,始终维持多路平衡也是b树的优势
B+树比B树的查询优势:
https://www.chinaz.com/2020/0909/1182460.shtml
b+树相比于b树的查询优势:
- b+树的中间节点不保存数据,所以磁盘页能容纳更多节点元素,更“矮胖”;
- b+树查询必须查找到叶子节点,b树只要匹配到即可不用管元素位置,因此b+树查找更稳定(并不慢);
- 对于范围查找来说,b+树只需遍历叶子节点链表即可,b树却需要重复地中序遍历,如下两图: