确保Oracle在从本地表加入数据之前远程运行一组子查询/ CTE

时间:2016-04-14 09:20:58

标签: sql oracle database-performance dblink

我们有一些相当复杂的查询依赖于通过dblink访问的远程数据库上的表。 主要数据来自远程数据库,本地表用于将中央系统的事务ID转换为本地系统,添加额外属性并对其进行过滤。

SELECT rmote.*, 
       locl.local_id
  FROM some_local_table locl
  JOIN (-- REMOTE: This entire block only uses tables from the remote db
        WITH
          part1 as (SELECT ...
                      FROM r.table1
                      JOIN r.table2 ON (...)),
          part2 as ( etc. )
        SELECT ...
       )
       rmote ON (rmote.central_id = locl.central_id)    
 WHERE locl.propx IN (...)

如果执行计划涉及单独访问远程表(上面的虚拟代码中的 r.table1 r.table2 ),则查询速度非常慢。 是否可以运行整个"远程"阻止远程服务器并将结果作为临时表发送回本地加入本地表?

0 个答案:

没有答案