Oracle和SQL Server DBLink性能问题(直接从table @ dblink中选择vs创建视图)

时间:2018-08-14 04:01:05

标签: sql-server oracle dblink

我已经成功创建了dblink以从Oracle 12访问SQL Server2000。我正在使用Oracle PL / SQL访问它。执行

select * from table1@dblink where id=1

立即产生输出到pl / sql窗口。但是,如果我先创建视图然后执行select语句,则结果会明显变慢。

"create view view1 as select * from table1@dblink;"
"select * from view1 where id=1"

据我了解,它只是从同一张表中进行选择,而我创建视图只是为了简化名称。

谢谢。

1 个答案:

答案 0 :(得分:2)

看起来您面临的问题基本上是运行查询的站点。当您使用通过dblinks访问的表运行查询时,Oracle有两个选项:它可以从dblink检索所有数据,然后在Oracle服务器上应用所有过滤器和联接条件,或将这些条件推送到远程站点(在您的情况下为SQL Server)并检索已经过滤的信息。您可以检查查询计划以查看差异。您也可以通过使用DRIVING_SITE提示来控制此行为,尝试使用此提示创建视图,您的查询应与第一个一样快:

create view view1 as select /*+ DRIVING_SITE(t)*/ * from table1@dblink t