引用远程服务器的视图。
哪一种表现更好?
为什么表现良好?
发布于 2018-05-28 10:48:48
AFAIK,这在很大程度上取决于您的远程服务器类型。由于服务器(本地和远程)上都有最新的SQL版本(2016),我没有注意到有什么不同。如果您的远程服务器是其他任何东西(postgres,mysql.)您实际上应该使用OpenQuery,因为它在远程服务器上执行查询,只获得正确的结果集。如果使用4个部件名称,SQL server将对本地进行排序和筛选。
例如,获取一个400万记录表并执行如下所示的查询:
SELECT * FROM reoteserver.database.schema.table where id = 4使用openquery,sql server将只获得id 4的记录,如果没有,它将得到所有的表,然后对其进行筛选以获得id 4。
发布于 2018-11-26 11:05:21
到这里来晚了,但本质上的区别是4个部分查询是在本地执行的,因此不能使用索引或键,因为本地服务器不知道它们。相反,它从本质上检索整个对象,然后应用过滤器。在一个小表上,您不太可能注意到一个差异,但是在一个数百万行的表上,您会注意到一个不同的地方。Openquery本质上告诉远程服务器代表它执行查询,然后将结果传回。
我要说的一般规则是:永远不要用4部分连接到表上。只有使用Openquery才能加入,我甚至会在可能的情况下避免这样做,但这更多的是个人偏好。
但是,由4部分组成的SP执行(即EXEC ServerName.DBName.SchemaName.ObjectName )本质上是一样的,因为这也告诉远程服务器代表它执行查询。
https://stackoverflow.com/questions/50564505
复制相似问题