【发布时间】:2010-03-17 14:15:11
【问题描述】:
我在 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,然后限制了本地化,考虑到表的大小,这需要相当长的时间。是否有任何理由添加插入会以这种方式改变行为?
【问题讨论】: