参考:https://mp.weixin.qq.com/s/rDCEFzoKHIjyHfI_bsz5Rw
https://mp.weixin.qq.com/s/jRZMMONW3QP43dsDKIV9VQ
问题:数据库中查找数据常见操作有查找某一数据、范围查询,B树的范围查询就要用到中序遍历了,这样就会很繁琐。
B树能极大减少磁盘IO次数,所以可以在B树的基础之上进行修改,所以B+树登场了。
一个m阶的B+树具有如下几个特征:
1.根结点至少有两个子女
2.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。
3.所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。
4.所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。
B+树范围查找3~11过程:
B+树与B-树区别:
1.关键字对应的子树数量不同
B+树,n个关键字对应n棵子树,关键字代表子树的最大(小)元素
B-树,n个关键字有n+1棵子树,关键字用来划分值域
2.非叶子结点不同
B+树,非叶子结点存储的是索引,数据在链表中
B-树,非叶子结点存储的是数据
3.叶子结点不同
B+树,叶子节点包含全部关键字信息,以及这些关键字的指针,而且叶子节点本身按照大小顺序链接。
B- 树,叶子节点只包含当前节点的信息,没有全部的信息,而且叶子节点也没有按照顺序链接
4.查找不同
B+树,查找元素需要到叶子结点,查找性能稳定
B-树,找到就可以返回