Mysql的索引为什么用B树而不是跳表

众人好,我是鱼皮。

在咱们的回忆中,mysql数据内外不过即是保存一行行的数据。跟个excel似的。

直接遍历这一行行数据,功能即是O(n),对比慢。为了加快查问,利用了B+树来做索引,将查问功能优化到了O(lg(n))。

但题目就来了,查问数据功能在lg(n)级其它数据机关有不少,好比redis的zset里用到的跳表,也是lg(n),而且完成还贼简朴。

那为甚么mysql的索引,不利用跳表呢?

咱们即日就来聊聊这个话题。

B+树的机关

在这边,我简朴归纳下B+树的机关。

B+树查问进程

如上图,寻常B+树是由多个页构成的多层级机关,每个页16Kb,关于主键索引来讲,最末级的叶子结点放行数据,非叶子结点放的则是索引讯息(主键id和页号),用于加快查问。

好比说咱们想要搜索行数据5。会先从顶层页的record们动手。record里包括了主键id和页号(页地点)。


转载请注明:http://www.aierlanlan.com/rzdk/954.html