Multidimensional Index的数据结构

单维度索引是一棵B-树。如果一个索引由多个key组成,是一个Multidimensional Index(多维索引),该怎么办?

基本的方法是建一个Index of Index.  确切地说,是为第一个属性建立一个B-树,这棵树的叶子结点指向的不是记录,而是第二个属性的B-树,第二属性的B-树叶结点指向的才是记录(如果还有第三属性,则第二属性树的叶结点指向第三个属性的B-树)

举个简化的例子。假设第一属性是性别,第二属性是年龄。 最终的树就是:(前两列代表索引项,最右一列是记录)

德华
冠希
嘉玲
阿娇

可以看出,第一属性只有一棵索引树;第二属性则有多棵索引树,第一属性的每个叶结点都会挂一棵第二属性的索引树。

查询的效率,取决于它有没有指定第一属性的值。如果指定了,就可以从唯一的第一属性的索引树中沿树根而下; 如果没有,就要遍历每棵第二属性索引树,性能会差很多。

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.