我在Oracle中建立索引时遇到问题。将试图用一个实例来解释我的问题,如下所示。错误索引由Oracle选择
我与列A,B,C,d 表TABLE1另一个表TABLE2与列A,B,C,E,F,H
我已经创建指标的TABLE1
IX_1 A
IX_2 A,B
IX_3 A,C
IX_4 A,B,C
当我给
为TABLE1
IY_1 A,B,C
IY_2 A
我已经创建了索引的查询与此类似
SELECT * FROM TABLE1 T1,TABLE2 T2
WHERE T1.A=T2.A
当我给的解释计划我得到了它没有得到IX_1也不IY_2
其采取IX_4也不IY_1
这是为什么不选择正确的指数?
编辑:
谁能帮我知道索引范围扫描之间的差异,INDEX UNIQUE SCAN,索引跳跃式扫描
我想,当一列在综合指数由Oracle
跳过跳跃式扫描指别人怎么样我没有主意!
当涉及到使用索引时,不存在_right_或_wrong_。根据成本计算,Oracle选择最优化的执行计划。你最近是否更新过数据库统计信息?此外,我不明白你为什么有这么多的索引。如果使用IX_4和IY_2,那么所有可能受益于IX_1,IX_2或IY_2的查询都可以以非常相似的成本和执行计划执行。 – Codo
谢谢科多。我没有创建这些索引。我们正在JAROSODS数据库上实施。他们有充足的索引。我试图模仿我的问题。另外我没有访问权限来更改这些索引。只是为了使用它们 – shanmugamgsn
@Codo >>你的意思是说我们不能手动改变成本计算?你在这里的数据库统计数据是什么意思? – shanmugamgsn