B树和B+树

数据库的索引

数据库当中存储着海量的数据,光是数据库索引就有很多,当我们要查找数据的时候,能把整个索引树读入到内存中吗?显然不行,因此我, 只能以索引树的节点作为基本单元,每次把单一节点从磁盘读取到内存中。为了减少磁盘I/O,我们需要把原本瘦高的二叉树结构变得”矮胖“,让每一个节点承载更多的元素,拥有更多的孩子。

B树

B树单一节点拥有的最多子节点的数量,称为B树的阶。
B树虽然可以改善数据库查询的性能,但是却存在一个不足之处,不方便进行范围查询。数据库的查询,不止涉及单一结果查询,也会涉及一个区间内结果的查询,对于前者,B树很容易实现,对于后者,B树实现起来会非常烦琐,需要进行中序遍历,在父节点和子节点之间不断切换。

具有以下特点:

1、根节点至少有两个子节点

2、每个中间节点都包含k-1个元素(也称为关键字)和k个孩子,其中m/2<=k<=m。

3、每一个叶子节点都包含k-1个元素

4、所有叶子节点都位于同一层

5、每个节点中的元素从小到大排列,节点当中

k-1个元素正好是k个孩子包含的元素的值域划分

B+树

B+树是B树的升级版,它和B树有一些共同点,但也具备新的特征。

具有以下特点:

1、有k个子树的中间节点包含k个元素(B树中是k-1个元素),每个元素不报错数据,所有都保持在叶子节点

2、所有的叶子节点包含了全部元素,依照元素大小升序排序,叶子节点之间用双向指针相连接。

3、所有之间节点的元素都同时存在与子节点,在子节点元素中是最大(或最小元素)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值