在具有多个多个索引甲骨文提示连接语句

问题描述 投票:2回答:1

我有如下的查询:

SELECT /*+ INDEX(A T1_IX01) INDEX(A T1_IX02) INDEX(B T2_IX01) INDEX(C T2_IX01)*/
       *
FROM   T1 A
JOIN   T2 B
ON     A.SOURCE = B.C1
JOIN   T2 C
ON     A.TARGET = C.C1;

和我需要使用从T1我与源列和另一与已映射的值与被索引以及T2的C1 TARGET列创建2个索引。

与当前的状态,但它只能使用从T1一个索引被规定为第一提示但不是的后一个。总之,我想用在同一个表中创建了两个不同的指标为两个独立的连接。

为什么,我应该如何解决这个问题,以获得更快的结果呢?

sql oracle query-performance
1个回答
0
投票

很显然,我已经给了暗示优化器使用哈希联接,而不是使用创建的索引,那么性能有所回升相当高。任何其他的想法,将不胜感激。

SELECT /*+ use_hash */
       *
FROM   T1 A
JOIN   T2 B
ON     A.SOURCE = B.C1
JOIN   T2 C
ON     A.TARGET = C.C1;
© www.soinside.com 2019 - 2024. All rights reserved.