最新消息:

Oracle索引abc

未分类 admin 3102浏览 0评论

在这篇文章里,给大家简单介绍一下本人对Oracle索引的理解,如有不妥的地方,请不吝指教。

本文只讲最最平常最最简单的索引,就是以create index ix on tx(a,b,c);形式创建的索引,而不讲位图索引、反向键索引、倒序索引、基于函数的索引等等。其实呢,只要是基于B树的索引,不管是在Oracle, Mysql,还是其它数据库中,原理应当都是一样的。

索引最重要的一个性质应该就是有序,索引中的每一项,是从左到右,从小到大,以严格的顺序排列好的。

下面的讨论都以上面的索引ix(a,b,c)为例。

把这棵索引的叶子节点画到纸上,大概是这样的:
a1 a2 a3 …… an
b1 b2 b3 …… bn
c1 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 < bj) or (ai = aj ...

转载请注明:爱开源 » Oracle索引abc

您必须 登录 才能发表评论!