T-SQL B+树索引简介

https://mp.weixin.qq.com/s/BQAM2YqpuOAH4FuVKphBXA

内容基本都是借鉴,笔者只是整理,加深自己的理解及记忆,详细内容见上面连接

在介绍B+树索引之前先了解二叉树、平衡二叉树、B树、B+树几种数据结构

二叉查找树

先上图

二叉树的特点就是任何节点左子节点的键值都小于当前节点的键值,右子节点的键值都大于当前节点的键值,利用二叉树存储数据,会大大提升查询速度

平衡二叉树

上面展示了合理的二叉树结构,但有一种二叉树结构不是很合理,如下图

当我们寻找键为17的值时,也相当于全表扫描了,导致这个的原因是二叉树结构不平衡,高度太高,影响了查询速度,这个时候我们就需要用到平衡二叉树了,平衡二叉树每个节点的左右子树的高度差不能超过1,查询速度更加快死和稳定,下图是平衡二叉树和非平衡二叉树的区别

B树

二叉树的节点很多,高度也很高,我们进行查询的时候会进行很多次OI,效率很低,为了解决这个弊端,我们需要一种单个节点可以存储多个键值和数据的平衡树结构,这个时候就需要我们的B树出场了

B树(balance tree)即为平衡树,如下所示

从上图可以看出,B树相对于平衡二叉树,每个节点存储了更多的键值(key)和数据(data),并且每个节点拥有更多的子节点,子节点的个数一般称为阶,上述图中的B树为3阶B树,高度也会很低。可以显著减少IO。

B+树

B+树是B树的一种升级,结构如下图

B+树和B树的不同:

1.B+树的非叶子节点是不存数据的,仅存键值,而B树的所有节点都可以存数据,之所以这么做是因为数据库中的页的大小是固定的,默认16KB,可以存很多的键值,相应的树的阶数(节点的子节点树)就会更大,树就会更胖更矮,IO次数会再次减少。另外B+树阶数等于键值的数量,如果我们B+树的一个节点存1000个键值,那么3层B+树就可以存1000的3次方=10亿个数据,一般根节点常驻内存,那么查10亿条数据,我们只需要进行2次IO。

B+树特点:

1.有些B+树结构中的叶子节点不存数据,而是存数据在磁盘中的地址,

2.B+树结构中页都是双向连接的,叶子中的数据是单项链表

3.B+树的非叶子节点是不存数据的,仅存键值

通过上述描述可以看出B+树在当作索引的存储结构时的优势,在此感谢原作者安静的boy的付出

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值