TSQL在链接服务器上查询视图的最有效方法是什么?

时间:2012-05-30 21:16:36

标签: tsql view ssms linked-server

我有两个SQL Server,我是一个系统管理员。一个是名为LIGHT的2008R2服务器,因为该框体验活动非常少。另一个是名为HEAVY的2005服务器,它在一天中看到了相当不错的活动量。两台服务器都在同一个数据中心。我在LIGHT上创建了一个链接服务器,以便它可以看到HEAVY。

我已经创建了一个关于HEAVY的视图,以便在过去几天内每天按位置累计销售额或多或少:

SELECT BusinessDate,
       Location,
       SUM(Sales)
FROM   Last7DaysOfSales
GROUP BY BusinessDate, Location

当我使用SSMS在HEAVY上运行此视图时,它会在30秒内运行。当我通过链接服务器连接从LIGHT运行相同的视图时,需要17分钟!我希望使用一个视图意味着“重举”将在HEAVY上完成,并且视图的结果发送给LIGHT。考虑到荒谬的运行时间,似乎LIGHT正在拉动所有记录并完成工作本身?

我能解决这个问题最有效的方法是什么?是否有可能让HEAVY在本地处理执行并将结果传递给LIGHT?或者我唯一的选择是在HEAVY上创建一个夜间进程,每晚将这个视图的结果转储到一个表中,然后让LIGHT抓住表中的数据?

非常感谢提前。

2 个答案:

答案 0 :(得分:1)

如果您想强制在远程计算机上完成处理,我建议使用OPENQUERY。例如:

SELECT *
FROM   OPENQUERY(
        HEAVY,
        'SELECT BusinessDate,
               Location,
               SUM(Sales)
        FROM   MyDatabase.dbo.Last7DaysOfSales -- Note the dot notation
        GROUP BY BusinessDate, Location')

答案 1 :(得分:0)

或者将其放在View或存储过程中。 并从远程机器访问它们。