<span>028-B+树(一)</span>

B+ 树

这部分主要学习:什么是B+树?

了解了 B 树后再来了解下它的变形版:B+ 树,它比 B 树的查询性能更高。

一棵 B+ 树需要满足以下条件:

  1. 节点的子树数和关键字数相同(B 树是关键字数比子树数少一)
  2. 节点的关键字表示的是子树中的最大数,在子树中同样含有这个数据
  3. 叶子节点包含了全部数据,同时符合左小右大的顺序

简单概括下 B+ 树的三个特点:

  1. 关键字数和子树相同
  2. 非叶子节点仅用作索引,它的关键字和子节点有重复元素
  3. 叶子节点用指针连在一起

首先第一点不用特别介绍了,在 B 树中,节点的关键字用于在查询时确定查询区间,因此关键字数比子树数少一;而在 B+ 树中,节点的关键字代表子树的最大值,因此关键字数等于子树数。

第二点,除叶子节点外的所有节点的关键字,都在它的下一级子树中同样存在,最后所有数据都存储在叶子节点中。

根节点的最大关键字其实就表示整个 B+ 树的最大元素。父节点的每个数据都是其对应子节点的最大值

第三点,叶子节点包含了全部的数据,并且按顺序排列,B+ 树使用一个链表将它们排列起来,这样在查询时效率更快。

由于 B+ 树的中间节点不含有实际数据,只有子树的最大数据和子树指针,因此磁盘页中可以容纳更多节点元素,也就是说同样数据情况下,B+ 树会 B 树更加“矮胖”,因此查询效率更快。

B+ 树的查找必会查到叶子节点,更加稳定。

有时候需要查询某个范围内的数据,由于 B+ 树的叶子节点是一个有序链表,只需在叶子节点上遍历即可,不用像 B 树那样挨个中序遍历比较大小。

B+ 树的三个优点:

  1. 层级更低,IO 次数更少
  2. 每次都需要查询到叶子节点,查询性能稳定
  3. 叶子节点形成有序链表,范围查询方便

 

全部评论

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
7549次浏览 68人参与
# 你的实习产出是真实的还是包装的? #
1426次浏览 37人参与
# MiniMax求职进展汇总 #
23387次浏览 304人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7218次浏览 38人参与
# 简历第一个项目做什么 #
31401次浏览 317人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
186653次浏览 1116人参与
# 巨人网络春招 #
11249次浏览 223人参与
# 研究所笔面经互助 #
118814次浏览 577人参与
# 重来一次,我还会选择这个专业吗 #
433143次浏览 3924人参与
# 简历中的项目经历要怎么写? #
309747次浏览 4172人参与
# 面试紧张时你会有什么表现? #
30432次浏览 188人参与
# AI时代,哪些岗位最容易被淘汰 #
62996次浏览 764人参与
# 正在春招的你,也参与了去年秋招吗? #
362936次浏览 2635人参与
# 你怎么看待AI面试 #
179594次浏览 1197人参与
# 职能管理面试记录 #
10763次浏览 59人参与
# 网易游戏笔试 #
6402次浏览 83人参与
# 腾讯音乐求职进展汇总 #
160489次浏览 1107人参与
# 校招笔试 #
468616次浏览 2959人参与
# 把自己当AI,现在最消耗你token的问题是什么? #
7071次浏览 156人参与
# 你觉得通信/硬件有必要实习吗? #
155408次浏览 1065人参与
# 小红书求职进展汇总 #
226976次浏览 1357人参与
# 从哪些方向判断这个offer值不值得去? #
56718次浏览 357人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务