二叉树、B树以及B+树


数据库索引结构一般引用B树或者索引。

利用树结构的原因?

  1. 树结构查询效率更高
  2. 节点按照顺序排列

二叉树结构


B树结构


一个m阶的B树具有如下几个特征:

1.根结点至少有两个子女。

2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m

3.每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m

4.所有的叶子结点都位于同一层。

5.每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划。

数据库索引选用B树不选用二叉树原因?

索引存储在硬盘上,当查询索引时,不能将索引全部加载到内存中,因为索引达到一定数量时,数据量很大,所以需要按照磁盘页分页加载查询,B树的一个节点即为一个磁盘页(默认最大为16K)。

  1. B树的“矮胖”结构,节点内容丰富,可降低磁盘IO
  2. 虽然在每个节点中仍需要对比,但是相对磁盘IO,内存中的比较对于性能影响几乎可以忽略

B+树结构


B+树特征

1.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。

2.所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。

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

B+树与B树的区别?

  • B+树的子节点中只包含索引,不包含数据指针,B树结构中包含;导致B+树相对,每个节点包含的信息更加多,相对B树结构更加矮胖,磁盘IO次数更少
  • B+树的叶子节点还包括了下一个叶子节点指针,利于范围查询
  • B+树的指针信息都包含在叶子节点中,所以B+树查询性能稳定;B-树当查询到中间节点时,性能更优


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值