【数据结构】B+树

本文介绍了B+树的特点,如非叶子节点仅作为索引、叶子节点有序链表的优势。详细讲述了B+树与B树的对比,以及在数据库中如何利用B+树提高查询效率,包括未建立索引和建立主键索引的查询性能差异和区间查询的高效执行。
摘要由CSDN通过智能技术生成
B+树的特点

1、非叶子节点仅具有索引作用。也就是说,非叶子节点只能储存key不能储存value。

2、树的所有叶子节点构成一个有序链表,可以按照key排序的次序依次遍历全部数据。

B+树存储数据

如果参数M选择为5,那么每个节点最多包含4个键值对,我们以5阶B+树为例,看看B+树的数据存储。

1、在空树中插入5。

2、继续插入8、10、15。

3、继续插入16。

4、继续插入17、18。

5、继续插入6、9、19、20、21、22。

6、继续插入7。

B+树和B树的对比
B+树的优点

1、由于B+树在在非叶子节点上仅当做索引使用,不包含真正的数据,所以在内存相同的情况下B+树能够存放更多的key。

2、B+树的叶子节点都是相连的,因此对整棵树的遍历只需要一次线性遍历叶子节点即可。而且由于数据线性排列并且相连,所以便于区间查找和搜索。而B树则需要进行每一层的递归遍历。

B树的优点

由于B树的每一个节点都包含key和value,因此我们在根据key查找value时,只需要找到key所在的位置就能找到value。但B+树只有叶子节点存储数据,索引每一次查找都必须一层一层一直找到树的最大深度处(即叶子节点的深度)才能找到value。

B+树在数据库中的应用

在数据库的操作中,查询操作可以说是最频繁的一种操作。因此在设计数据库时,必须要考虑查询的效率问题。在数据库中,普遍用到B+树以提高查询效率。为了提高查询效率,我们可以基于某张表的某个字段建立索引,这个索引就是B+树实现的。

未建立主键索引查询

执行 select * from user where id=18 ,需要从第一条数据开始,一直查询到第6条,发现 id=18 ,此时才能够查询出目标结果,共需要比较6次。

建立主键索引查询

区间查询

执行 select * from user where id>=10 and id<=18 ,如果有了索引,由于B+树的叶子节点形成了一个有序链表,所以我们只需要找到 id=12 的叶子节点,按照遍历链表的方式顺序往后查询即可,效率非常高。

  • 11
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值