2

情况如下:我们需要连接一个 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 服务器。

4

3 回答 3

3

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

假设 Oracle 服务器中的表上有支持连接操作的索引,那么这两个服务器上的工作量就会减少。

于 2008-12-18T14:34:55.833 回答
2

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

于 2008-12-18T14:30:08.213 回答
2

hamishmcn 所说的适用。

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

于 2008-12-18T14:44:52.927 回答