【发布时间】:2011-09-14 15:22:32
【问题描述】:
我有一个查询连接了很多字段。由于某种奇怪的原因,一个表的索引根本没有被使用(我清楚地使用了索引键),而是在进行全表扫描。我想强制索引。我们曾经在 sybase 中做优化器提示。 oracle中是否有类似的提示? 例如,在 sybase 中连接表 a、b、c 并在表 a 中使用 myindex,我会这样做:
SELECT a.*
FROM a(INDEX myindex),
b,
c
WHERE a.field1 = b.field1
AND b.field1 = c.field1
问题是我如何在 oracle 中执行此操作。 谢谢 萨罗
【问题讨论】:
-
你能发布查询计划吗?
-
试图超越查询优化器并不是一个好主意。简短说明:stackoverflow.com/questions/7358137/…
-
我确实见过 Oracle 在索引效率更高时选择全表扫描的情况,反之亦然。第一种情况通常出现在从大多数行不会被选择的大表中选择时,而第二种情况通常出现在从大多数行会 被选中。
-
@Vanessa 也许您需要生成统计数据来处理数据的偏斜分布,请参阅:asktom.oracle.com/pls/asktom/… 而不是使用提示。
标签: oracle optimization indexing