查找算法 - 索引查找(二)- 分块索引(数据库索引技术基础)

- 1 min

数据结构与算法系列(十九)

昨天给大家分享了线性索引中的稠密索引,并提到了稠密索引的缺点,进而引出今天的主题 —— 分块索引。

为了减少索引项个数,我们对数据集进行分块,并使其分块有序,然后再给每个分块建立一个索引项(索引值是分块中最大关键码),至于分块内部,则不管其有序性,从而减少索引项的个数。在查找的时候在索引项中通过二分查找找到指定索引项,然后根据该索引项中的关键码去相应分块遍历查找指定元素,这是一种折中方案,既兼顾了空间复杂度,又兼顾了时间复杂度。

分块索引图示如下:

这里面有几个概念需要阐述下,首先是分块有序,需要满足两个先决条件:

其次,分块索引的索引项包含三个数据项:

最后,在分块索引中查找,分两块进行:

分块索引的时间复杂度是:O(log(m)+n),其中 m 是分块数,n 是块内元素个数,在索引表长度和块内元素相等时,时间复杂度最优。性能要由于顺序查找,但是比二分查找要差。

总体来说,分块索引在兼顾存储空间和查找性能的情况下,被普遍用于数据库查找等技术中。

rss facebook twitter github gitlab youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora