索引的演变过程

索引结构的演变过程:

B树:

索引最先是从B树结构演变过来的

看下面的数据结构就是BTree,早期的数据检索就是用的Btree

但是B树结构容易出现极端的不平衡状态,根据水桶原理···如果一棵树很倾斜,那么这个性能可能由最糟糕的节点决定。

如下图所示:

同样的检索where index=9,和where index= 65之间的差距是很大的。

这种情况如果我们需要检索9,就只需要检索一次就能搜索到,但是搜索65就需要6次了···那 千万级以上的数据检索的深度是不是很深呢?

 

 

B-树:

所以考虑到平衡我们就演变出来了B-Tree

所有的索引值都是1楼,从3楼遍历到1楼都需要比较3次,但是随着索引技术的发展,发现一个致命的缺点,那就是如果我需要执行的条件是 where index>=3 and index<=10这种情况,因为我们要遍历3,5,9,10根据图示,5和9之间没有通道,我们需要走6次才能走到,5和9之间没有直接走通,需要折返到中间节点然后才能扫描到9和10,如果我们把1楼的所有节点打通,是不是会快速很多呢 ?

于是后来演变出来了B+Tree。

 

B+Tree

一楼的所有区块都用一个Q指针连起来了,同样执行where index>=3 and index<=10就只需要4次就好了,在数量级比较大的情况下,这是相当有优势的。所以B+Tree也是常用的索引技术。但是B+Tree依旧是有缺陷的,他只有1楼是通的,如果第二层的节点需要遍历的话,还需要走到一楼去,所以就产生了B*Tree.

 

B*Tree

B*Tree和B+Tree之间在中间层加入了一个Q指针,所以说B*Tree才是最合理的索引。可以解决几乎所有的检索条件。但是现在大多数使用的还是B+Tree 因为几乎可以满足需求了。

索引结构的演变过程介绍完了,下个专题,我们来探讨索引的类型。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值