Oracle9i索引的问题

beecat 2004-05-14 11:53:12
很多文章上介绍,如果建立了一个复合索引,那么要么在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会怎么使用索引呢?我跟踪了一下,没法整理出他的规则。晕了。谁能说解释一下?谢谢。
...全文
57 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧