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 的叶子节点,按照遍历链表的方式顺序往后查询即可,效率非常高。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐