J'ai un peu de mal avec une sélection en insert sur un dblink dans l'oracle 10. J'utilise la déclaration suivante:Select et Insert dans dblink
INSERT INTO LOCAL.TABLE_1 (COL1, COL2)
SELECT COL1, COL2
FROM [email protected] s
WHERE COL1 IN (SELECT COL1 FROM WORKING_TABLE)
Quand je lance la déclaration qui suit est ce que obtient sur le serveur exécuter à distance sur le DB Link:
SELECT /*+ OPAQUE_TRANSFORM */ "COL1", "COL2"
FROM "REMOTE"."TABLE1" "S"
Si je lance la sélection uniquement et ne pas faire l'insert dans ce qui suit est exécuté:
SELECT /*+ */ "A1"."COL1"
, "A1"."COL2"
FROM "REMOTE"."TABLE1" "A1"
WHERE "A1"."COL1" =
ANY (SELECT "A2"."COL1"
FROM "LOCAL"."TABLE1"@! "A2")
Le problème est dans le cas d'insertion de la table d'enitre est tirée à travers le dblink, puis limité localy qui prend un peu de temps compte tenu de la taille de la table. Y a-t-il une raison pour laquelle ajouter l'insert changerait le comportement de cette manière?
J'avais essayé d'ajouter l'indice suivant à la requête initiale avant de poster, mais j'ai obtenu les mêmes résultats. /* + DRIVING_SITE (s) */ Ce serait une allusion à conduire sur le côté dblink correct? – Domtar