B-树和B + 树的区别
B-树特征
一个m阶的B树具有如下几个特征:
1.根结点至少有两个子女。
2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m
3.每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m
4.所有的叶子结点都位于同一层。
5.每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划。
B + 树特征
1.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。
2.所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。
3.所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。
总结一下
直观区别
- B-树中结点间无重复元素,B + 树有重复元素
- B-树叶结点间无关联,B + 树叶结点间有指针相连
具体区别
- B + 树中非叶结点元素无卫星数据也就是说不是叶结点的数据没有指针指向数据而 B-树每个元素都可以指向数据,理论上相同盘块 B + 树的结点索引元素的会存的更多,而 B-树在单个数据搜索上更快一些
- B-树在范围搜索上只能通过树的遍历的方式,而B + 树可以直接通过叶结点的指针实现快速范围搜素