我有一个应用程序使用的一些视图,其中包含对作为链接服务器的另一台服务器的引用的负载(我将本地服务器称为“目标”,而将远程服务器称为“源”)-有点像这样:
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
我讨厌这些观点,我想知道我是有道理还是有偏见。
是否有更好的方法来编写这些内容(性能,简洁性,发布到其他服务器的能力等?
到目前为止,我的想法一直是:
Create view [vw] as select * from openquery([Source],'SELECT * FROM vw') as t
这似乎是一项艰巨的工作,我担心自己的偏见会让我变得更好。您认为我将从这些变化中受益吗?也许我还需要做些其他事情来使这些观点更好,或者(上帝禁止)我应该吸纳它并继续前进-您对此有何看法?并不是说他们的表现如此差劲,以至于现在无法发表评论,但我希望事情变得尽可能整洁。
您的代码示例建议查询中使用的所有表都驻留在一台服务器上。因此,在该服务器上创建视图似乎是一个不错的选择,因为所有的加入和填充都可以在一台服务器上本地完成-与您当前的状态相比,只有结果集需要通过链接的服务器进行传输。 >