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

TSQL在链接服务器上查询视图最有效的方法是什么?,tsql,view,ssms,linked-server,Tsql,View,Ssms,Linked Server,我有两个SQL服务器,我是系统管理员。其中一个是名为LIGHT的2008R2服务器,因为盒子几乎没有活动。另一个是名为HEAVY的2005服务器,它可以看到一整天都有相当数量的活动。两台服务器位于同一个数据中心。我已经在LIGHT上创建了一个链接服务器,以便它可以看到HEAVY 我已经创建了一个关于过去几天每个地点每天的高销售额到总销售额的视图,大致如下: SELECT BusinessDate, Location, SUM(Sales) FROM Last7Da

我有两个SQL服务器,我是系统管理员。其中一个是名为LIGHT的2008R2服务器,因为盒子几乎没有活动。另一个是名为HEAVY的2005服务器,它可以看到一整天都有相当数量的活动。两台服务器位于同一个数据中心。我已经在LIGHT上创建了一个链接服务器,以便它可以看到HEAVY

我已经创建了一个关于过去几天每个地点每天的高销售额到总销售额的视图,大致如下:

SELECT BusinessDate,
       Location,
       SUM(Sales)
FROM   Last7DaysOfSales
GROUP BY BusinessDate, Location
当我使用SSMS在HEAVY上运行此视图时,它将在30秒内运行。当我通过链接服务器连接从LIGHT运行相同的视图时,需要17分钟!我希望使用视图将意味着“繁重的提升”将在繁重的基础上完成,并且视图的结果将显示出来。考虑到荒谬的运行时间,LIGHT似乎正在把所有的记录都拉过来,自己完成工作

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


非常感谢。

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

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

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

我不知道OPENQUERY强制远程处理。我是否有办法利用我在HEAVY上的现有视图让HEAVY进行处理,或者LIGHT是否总是在本地执行该视图?谢谢当然,只需从查询中的视图中选择即可。