Oracle9i索引的问题
很多文章上介绍,如果建立了一个复合索引,那么要么在Where子句中使用索引的全部列,要么只能使用索引的第一个列,否则索引不会被使用。但是我在实际使用中发现,我建了一个复合索引,用到了表的4个列,在where子句中使用单独任何一列,都发现使用了索引。请问这是怎么回事?我用的是oracle9i。
另外,对一张表建立多个索引,但是有一个字段在多个索引中都存在。这时候Oracle会按照什么规则判断如何使用索引。有没有优先级?举例如下:
表有列:A,B,C,D,E,F,G。
索引
index1(A,B,C)
index2(C,D,E)
index3(E,F,G)
WHERE A='1' AND D='1'
WHERE F='1' AND G='1' AND C='1'
WHERE C='1' AND E='1'
WHERE E='1' AND C='1'
以上几种where子句,oracle会怎么使用索引呢?我跟踪了一下,没法整理出他的规则。晕了。谁能说解释一下?谢谢。