在这篇文章里,给大家简单介绍一下本人对Oracle索引的理解,如有不妥的地方,请不吝指教。如果不幸受到误导引起任何损失,本人概不负责:D本文只讲最最平常最最简单的索引,就是以create index ix on tx(a,b,c);形式创建的索引,而不讲位图索引、反向键索引、倒序索引、基于函数的索引等等。其实呢,只要是基于B树的索引,不管是在Oracle, Mysql,还是其它数据库中,原理应当都是一样的。索引最重要的一个性质应该就是有序,索引中的每一项,是从左到右,从小到大,以严格的顺序排列好的。下面的讨论都以上面的索引ix(a,b,c)为例。把这棵索引的叶子节点画到纸上,大概是这样的:a1 a2 a3 ...... anb1 b2 b3 ...... bnc1 c2 c3 ...... cn上面这个3×n的矩阵,每一列代表了一行记录,同时这一列记录,也对应了表里的唯一一条记录。当然,在Oracle里,对于non-unique索引,需要补上rowid,才是真正唯一的。上面的索引相当于create unique index ix on tx(a,b,c,rowid);我们先把这个细节忽略掉。把每一列看作一个向量,vi = (ai, bi, ci),有序的含义就是:vi < vj iff i < j;vi < vj这么定义:(ai < aj) or (ai = aj and bi <
...
继续阅读
(16)