【问题标题】:Oracle and SQL Server DBLink Performance Issue (Direct select from table@dblink vs create view)Oracle 和 SQL Server DBLink 性能问题(直接从 table@dblink 选择与创建视图)
【发布时间】:2018-08-14 13:28:35
【问题描述】:

我已成功创建 dblink 以从 Oracle 12 访问 SQL Server 2000。我正在使用 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"

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

谢谢。

【问题讨论】:

  • MS SQL Server 2000 ??多年不受支持:扩展支持于 2013 年 4 月 9 日结束。

标签: sql-server oracle dblink


【解决方案1】:

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

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

【讨论】:

  • 谢谢。我试过了,但结果还是一样。我以前从未使用过driving_site。我正在尝试先了解它,然后再报告。
  • 如何将 DRIVING_SITE 提示放在查询中而不是视图中?像这样: select /*+ DRIVING_SITE(view1)*/ * from view1 where id=1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多