【问题标题】:Join in linked server or join in host server?加入链接服务器还是加入主机服务器?
【发布时间】:2010-09-27 12:54:35
【问题描述】:

情况如下:我们需要连接一个 Oracle 数据库以提取一些数据。由于访问上述 Oracle 数据库确实很痛苦(主要是官僚障碍,而不是其他任何事情),我们正计划将其链接到我们的 SQL Server 并使用该链接在需要时访问数据。

对于我们的一个应用程序,我们计划制作一个视图以获取我们需要的数据。现在我们需要的数据来自两个表。如果我们这样做,哪个更可取?

这个(如果存在这样的东西,在伪 SQL 中):

 OPENQUERY(Oracle, "SELECT [cols] FROM table1 INNER JOIN table2")

或者这个:

 SELECT [cols] FROM OPENQUERY(Oracle, "SELECT [cols1] FROM table1")
 INNER JOIN OPENQUERY(Oracle, "SELECT [cols2] from table2")

有什么理由更喜欢其中一个吗?需要记住的一件事:我们限制了查询可以运行多长时间以访问 Oracle 服务器。

【问题讨论】:

  • 是时间限制让你不选择选项 1,我认为这显然是更可取的选项
  • 嗯...你有没有注意到问题在你写出来后比在你思考问题时显得如此明显? :-)

标签: sql sql-server-2005 oracle join linked-server


【解决方案1】:

我会选择您的第一个选项,特别是如果您的查询包含 where 子句来选择表中的数据子集。

假设在支持连接操作的 Oracle 服务器中的表上有索引,则需要在两台服务器上进行较少的工作。

【讨论】:

    【解决方案2】:

    如果内部连接显着减少了总行数,那么选项 1 将导致网络流量少得多(因为您不必让 table1 中的所有行都经过 db 链接

    【讨论】:

      【解决方案3】:

      hamishmcn 所说的适用。

      另外,SQL Server 并不真正了解 oracle 服务器保存的索引、统计信息或缓存。因此,oracle 服务器可能会比 sql 服务器更有效地使用连接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-11
        • 2016-10-07
        • 1970-01-01
        • 2011-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多