首页 > 解决方案 > View 中的链接服务器与从另一台服务器远程调用 View

问题描述

我有一些应用程序使用的视图,其中包含对单个其他服务器的大量引用,作为链接服务器(我将调用本地服务器“目标”和远程服务器“源”) - 有点像这样:

SELECT
    --[Columns]
FROM
            [Source].[s_db].[dbo].[a_table] A
INNER JOIN  [Source].[s_db].[dbo].[b_table] B   ON A.[Id]  = B.[Id] 
LEFT JOIN   [Source].[s_db].[dbo].[c_table] C   ON B.[Id2] = C.[Id] 
INNER JOIN  [Source].[s_db].[dbo].[d_table] D   ON C.[Id2] = D.[Id]
INNER JOIN  [Source].[s_db].[dbo].[e_table] E   ON D.[Id2] = E.[Id]
---- and so on

我讨厌这些观点,我想知道我是有道理还是有偏见。

有没有更好的方法来编写这些(性能、整洁、发布到不同服务器的能力等)?

到目前为止,我的想法是:

这似乎是很多工作,我担心我只是让我的偏见占了上风。你认为我会从这些变化中看到任何好处吗?也许我应该做些其他的事情来改善这些观点,或者(上帝保佑)我应该把它吸干然后继续前进——你的意见是什么?并不是说他们现在的表现如此糟糕以至于引起评论,但我希望事情尽可能好和整洁。

标签: sql-serverperformanceviewlinked-serveropenquery

解决方案


您的代码示例建议查询中使用的所有表都驻留在一台服务器上。因此,在该服务器上创建视图似乎是一个不错且合法的选择,因为所有加入和工作都可以在一台服务器上本地完成 - 与您拥有的当前状态相比,只需要通过链接服务器传输结果集。


推荐阅读