在dblink中选择并插入

Dom*_*tar 8 oracle dblink insert

我在oracle 10中的dblink中使用select into插入时遇到了一些麻烦.我使用以下语句:

INSERT INTO LOCAL.TABLE_1 ( COL1, COL2) 
SELECT  COL1, COL2
FROM REMOTE.TABLE1@dblink s
WHERE COL1 IN ( SELECT COL1 FROM WORKING_TABLE)
Run Code Online (Sandbox Code Playgroud)

当我运行语句时,以下是对DB Link上的远程服务器运行的内容:

SELECT /*+ OPAQUE_TRANSFORM */ "COL1", "COL2"
FROM "REMOTE"."TABLE1" "S"
Run Code Online (Sandbox Code Playgroud)

如果我只运行select而不执行以下插入运行:

SELECT /*+ */ "A1"."COL1"
     , "A1"."COL2"
  FROM "REMOTE"."TABLE1" "A1"
 WHERE "A1"."COL1" =
   ANY ( SELECT "A2"."COL1"
       FROM "LOCAL"."TABLE1"@! "A2")
Run Code Online (Sandbox Code Playgroud)

问题是在插入的情况下,enitre表被拉过dblink然后限制localy,这给表大小花费了相当多的时间.是否有任何理由添加插入会以这种方式改变行为?

Ren*_*ene 3

您可能想要使用 Driving_site 提示。这里有一个很好的解释: http ://www.dba-oracle.com/t_sql_dblink_performance.htm