4

我目前正在审查一些在数据库上运行存储过程的作业。所有这些存储过程都连接到链接服务器。我对这个功能不太熟悉。我目前正试图确定为什么使用这些而不是普通查询,因为我正在运行的查询似乎正在提取数据。

我读了这个,这是 MSDNs 对 openquery 的解释。:

http://technet.microsoft.com/en-us/library/ms188427.aspx

我也读了这个,这是一个 stackoverflow 链接,讨论为什么不在本地服务器上使用它。:

为什么在本地服务器上使用 OPENQUERY 不好?

我的问题是,当存储过程需要链接服务器的嵌入式凭据时,您是否基本上只使用它?还是有更多我不知道的使用 OpenQuery 的原因?

4

1 回答 1

4

我可以想到使用 openquery 的两个优点。它可以通过在远程服务器上进行必要的过滤来减少您需要传输的数据量。它可以允许远程服务器上的查询优化器在连接表时选择最佳执行计划。

另一种选择是使用REMOTE JOIN 我有一些运气使用它,但 Aaron Bertrand 在这里写了一篇很好的文章.. http://www.mssqltips.com/sqlservertip/2765/revisit-your-use-of-该-sql-server-remote-join-hint/

这是MS文档

偏僻的

指定在右表的站点上执行连接操作。当左表是本地表而右表是远程表时,这很有用。仅当左表的行数少于右表的行数时,才应使用 REMOTE。如果右表是本地的,则连接在本地执行。如果两个表都是远程的但来自不同的数据源,REMOTE 会导致在正确表的站点上执行连接。如果两个表都是来自同一数据源的远程表,则不需要 REMOTE。当连接谓词中比较的值之一使用 COLLATE 子句强制转换为不同的排序规则时,不能使用 REMOTE。REMOTE 只能用于 INNER JOIN 操作。

于 2014-01-07T05:24:10.420 回答