У меня возникли некоторые проблемы с выбором вставки через dblink в Oracle 10. Я использую следующее утверждение:
INSERT INTO LOCAL.TABLE_1 ( COL1, COL2)
SELECT COL1, COL2
FROM REMOTE.TABLE1@dblink s
WHERE COL1 IN ( SELECT COL1 FROM WORKING_TABLE)
Когда я запускаю инструкцию, выполняется следующее для удаленного сервера в БД:
SELECT /*+ OPAQUE_TRANSFORM */ "COL1", "COL2"
FROM "REMOTE"."TABLE1" "S"
Если я запускаю только select и не выполняю вставку, выполняется следующее:
SELECT /*+ */ "A1"."COL1"
, "A1"."COL2"
FROM "REMOTE"."TABLE1" "A1"
WHERE "A1"."COL1" =
ANY ( SELECT "A2"."COL1"
FROM "LOCAL"."TABLE1"@! "A2")
Проблема в случае вставки, когда таблица enitre перетаскивается через dblink, а затем ограничивается локально, что занимает достаточно много времени, учитывая размер таблицы. Есть ли какая-либо причина, по которой добавление вставки могло бы изменить поведение таким образом?