我在 oracle 10 中的 dblink 中选择插入插入时遇到了一些麻烦。我正在使用以下语句:
INSERT INTO LOCAL.TABLE_1 ( COL1, COL2)
SELECT COL1, COL2
FROM REMOTE.TABLE1@dblink s
WHERE COL1 IN ( SELECT COL1 FROM WORKING_TABLE)
当我运行语句时,以下是对 DB Link 上的远程服务器运行的内容:
SELECT /*+ OPAQUE_TRANSFORM */ "COL1", "COL2"
FROM "REMOTE"."TABLE1" "S"
如果我只运行选择而不执行插入,则运行以下内容:
SELECT /*+ */ "A1"."COL1"
, "A1"."COL2"
FROM "REMOTE"."TABLE1" "A1"
WHERE "A1"."COL1" =
ANY ( SELECT "A2"."COL1"
FROM "LOCAL"."TABLE1"@! "A2")
问题是在插入情况下,整个表被拉过 dblink,然后限制本地化,考虑到表的大小,这需要相当多的时间。是否有任何理由添加插入会以这种方式改变行为?