0

我有一个视图(视图 A),它从多个表中提取列。它还从另一个视图(视图 B)中提取一列,该视图从链接服务器表中获取其数据。

现在,视图 B 运行良好,大约在一秒钟内拉回了 11,000 行。视图 A 也运行良好。但是,如果我在来自链接服务器的列上从视图 A 到视图 B 进行 INNER JOIN,则整个查询运行速度非常慢,以至于超时。

如果我在不是来自链接服务器的列上从视图 A 到视图 B 进行 INNER JOIN,则它运行正常。

因此,我将问题追溯到加入链接服务器上的列。我只是不知道如何解决它。

任何人都可以给我任何指示吗?

4

1 回答 1

1

情况略有不同,但我和我的同事都看到了证据表明,如果你有这样的事情:

select something 
from LinkedServer.DataBase.Owner.Table
where whatever

然后 sql server 会先从另一台服务器中选择整个表,然后再应用 where 子句。这可能发生在你身上。

我们通过使用 openquery 而不是上面显示的完全限定方法来解决问题,并将 openquery 结果放入临时表中。然后我们加入临时表。

于 2013-07-17T16:59:28.917 回答