情况就是这样:我们需要连接一个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服务器。
答案 0 :(得分:3)
我会使用您的第一个选项,特别是如果您的查询包含where子句以选择表中数据的子集。
假设Oracle服务器中支持连接操作的表有索引,那么两台服务器上的工作量就会减少。
答案 1 :(得分:2)
如果内部联接显着减少了总行数,那么选项1将导致更少的网络流量(因为您不会让table1中的所有行都必须通过数据库链接
答案 2 :(得分:2)
hamishmcn说的适用。
同样,SQL Server并不真正了解oracle服务器保存的索引或统计信息或缓存。因此,oracle服务器可以使用连接执行比sql server更高效的工作。