我有一个视图(视图A),它从许多表中提取列。它还从另一个视图(视图B)中提取一列,该视图从链接服务器表中获取其数据。
现在,View B运行良好,在大约一秒钟内拉回了11,000行。查看A也运行良好。但是,如果我在链接服务器的列上从视图A到视图B进行INNER JOIN,则整个查询运行得太慢,超时。
如果我从一个不是来自链接服务器的列上从视图A到视图B进行内部连接,它运行正常。
因此,我将问题跟踪到加入位于链接服务器上的列。我根本不知道如何解决它。
任何人都可以给我任何指示吗?
答案 0 :(得分:1)
情况略有不同,但我和我的同事都看到过证据证明你有这样的事情:
select something
from LinkedServer.DataBase.Owner.Table
where whatever
然后sql server将首先从其他服务器中选择整个表,然后应用where子句。那可能发生在你身上。
我们使用openquery而不是上面显示的完全限定方法,并将openquery结果放入临时表中来解决问题。然后我们加入临时表。