2 votes

Indice Oracle sur les index multiples avec une instruction de jointure multiple

J'ai une question à poser comme suit :

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;

et j'ai besoin d'utiliser 2 index de T1 que j'ai créé avec la colonne SOURCE et un autre avec la colonne CIBLE qui a une valeur mappée avec le C1 de T2 qui est aussi indexé.

Dans l'état actuel, il n'utilise qu'un seul indice de T1, qui est indiqué comme premier indice, mais pas le dernier. En résumé, je voudrais utiliser deux index différents créés sur la même table pour deux jointures distinctes.

Pourquoi et comment dois-je résoudre ce problème pour obtenir un résultat plus rapide ?

0voto

Achelous01 Points 41

Apparemment, j'ai donné un indice à l'optimiseur pour utiliser la jointure de hachage au lieu d'utiliser les index créés, alors la performance a augmenté assez haut. Toute autre idée serait appréciée.

SELECT /*+ use_hash */
       *
FROM   T1 A
JOIN   T2 B
ON     A.SOURCE = B.C1
JOIN   T2 C
ON     A.TARGET = C.C1;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X