首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql server - Openquery vs 4部件名称

sql server - Openquery vs 4部件名称
EN

Stack Overflow用户
提问于 2018-05-28 10:40:39
回答 2查看 1.4K关注 0票数 1

引用远程服务器的视图。

  1. 4部件名称(ServerName、DatabaseName、所有者、对象名称)
  2. OpenQuery

哪一种表现更好?

为什么表现良好?

EN

回答 2

Stack Overflow用户

发布于 2018-05-28 10:48:48

AFAIK,这在很大程度上取决于您的远程服务器类型。由于服务器(本地和远程)上都有最新的SQL版本(2016),我没有注意到有什么不同。如果您的远程服务器是其他任何东西(postgres,mysql.)您实际上应该使用OpenQuery,因为它在远程服务器上执行查询,只获得正确的结果集。如果使用4个部件名称,SQL server将对本地进行排序和筛选。

例如,获取一个400万记录表并执行如下所示的查询:

代码语言:javascript
复制
SELECT * FROM reoteserver.database.schema.table where id = 4

使用openquery,sql server将只获得id 4的记录,如果没有,它将得到所有的表,然后对其进行筛选以获得id 4。

票数 5
EN

Stack Overflow用户

发布于 2018-11-26 11:05:21

到这里来晚了,但本质上的区别是4个部分查询是在本地执行的,因此不能使用索引或键,因为本地服务器不知道它们。相反,它从本质上检索整个对象,然后应用过滤器。在一个小表上,您不太可能注意到一个差异,但是在一个数百万行的表上,您会注意到一个不同的地方。Openquery本质上告诉远程服务器代表它执行查询,然后将结果传回。

我要说的一般规则是:永远不要用4部分连接到表上。只有使用Openquery才能加入,我甚至会在可能的情况下避免这样做,但这更多的是个人偏好。

但是,由4部分组成的SP执行(即EXEC ServerName.DBName.SchemaName.ObjectName )本质上是一样的,因为这也告诉远程服务器代表它执行查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50564505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档