#### b树和b+树 的 区别和优点 ####

部分内容摘自:B树和B+树的区别 - iVictor - 博客园

仅做个人备份,浏览请看原文

目录

#### 区别  ####

#### B+树的优点 ####

B树的优点


#### 区别  ####

(1)B+树中只有叶子节点会带有指向记录的指针(ROWID 见下面的解释)【指的是非聚簇索引,而聚簇索引叶节点上的是数据,详见:#### innodb索引在磁盘上的存储,以及叶子节点上的数据形式 ####_wangfy_的博客-CSDN博客_innodb叶子节点存储的内容】,而B树则所有节点都带有,在内部节点出现的索引项不会再出现在叶子节点中。

(2)B+树中所有叶子节点都是通过指针连接在一起,而B树不会。

_rowid到底是什么

在前文提到了_rowid并不是一个真实存在的列,其本质是一个非空唯一列的别名。为什么会这么说呢?

因为在某些情况下_rowid是不存在的,其只存在于以下情况:

  1. 当表中存在一个数字类型的单列主键时,_rowid其实就是指的是这个主键列
  2. 当表中不存在主键但存在一个数字类型非空唯一列时,_rowid其实就是指的是对应非空唯一列

需要注意以下情况是不存在_rowid

  1. 主键列或者非空唯一列的类型不是数字类型
  2. 主键是联合主键
  3. 唯一列不是非空的。

#### B+树的优点 ####

1. 非叶子节点不会带上ROWID,所以一个块中可以容纳更多的索引项,一是可以降低树的高度,二是一个内部节点可以定位更多的叶子节点。

2. 叶子节点之间通过指针来连接,范围扫描将十分简单,而对于B树来说,则需要在叶子节点和内部节点不停的往返移动。

B树的优点

对于在内部节点的数据,可直接得到,不必根据叶子节点来定位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值