数据结构之B+树

B+树结构特点

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

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

B+树存储数据

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

(1) 在空树当中插入5

(2)继续插入8,10,15

(3)继续插入16

(4)继续插入17

(5)继续插入18

(6)继续插入6,9,1920,21,22

(7)继续插入7

B+树和B树的对比

B+ 树的优点

1.由于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

所以我们只需要找到id为12的叶子结点,按照遍历链表的方式顺序往后查即可,效率非常高。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
B树是一种常用的索引数据结构,是从二叉查找树、平衡二叉树演化而来的。它被广泛应用于数据库系统中,包括MySQL中的InnoDB存储引擎。B树的特点是具有多个子节点,可以在每个节点中存储多个键值对,而不仅仅是一个键和一个值。通过使用B树索引,数据库可以更高效地存储和查找数据。 B树索引在InnoDB中的实现方式是,将每个节点作为一个数据页。从数据页的角度来看,B树查询过程是按照一定的规则进行的。查询过程从根节点开始,根据键的值进行比较,决定向左子节点还是向右子节点继续搜索。在每个节点中,根据节点存储的键值对进行比较,直到找到匹配的键值对或者确定无法找到匹配的键值对为止。 B树的优点在于可以提供较快的查询性能,因为B树具有平衡性,所以它的高度相对较低,每次查询只需经过几个节点即可找到目标数据。此外,B树还支持高效的插入和删除操作,因为它的平衡性可以保持树的结构相对稳定。 总之,B树是一种常用的索引数据结构,通过使用多个子节点和在节点中存储多个键值对的方式,可以提供高效的数据存储和查询性能。它在数据库系统中得到广泛应用,包括MySQL的InnoDB存储引擎。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [MySQL索引-B+树(讲得通透)](https://blog.csdn.net/zsz0147/article/details/117985568)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [MYSQL索引数据结构----B+树](https://blog.csdn.net/sanylove/article/details/127245540)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Beau Wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值