4

現在、データベースでストアド プロシージャを実行するいくつかのジョブを検討しています。これらのストアド プロシージャはすべて、リンク サーバーに接続しています。私はこの機能にあまり慣れていません。私が実行しているクエリがデータを引き込んでいるように見えるため、現在、これらが通常のクエリと比較して使用された理由を判断しようとしています。

これはMSDNのopenqueryの説明です。:

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

これは、ローカルサーバーで使用しない理由について話しているstackoverflowリンクです。:

ローカル サーバーで OPENQUERY を使用するのが悪いのはなぜですか?

私の質問は、ストアド プロシージャがリンク サーバーの埋め込み資格情報を必要とする場合に、基本的にこれを使用するだけですか? または、私が認識していない OpenQuery を使用するその他の理由はありますか?

4

1 に答える 1

4

openquery を使用すると、私が考えることができる 2 つの利点があります。リモートサーバーで必要なフィルタリングを行うことで、転送する必要があるデータの量を減らすことができます。これにより、リモート サーバー上のクエリ オプティマイザーが、テーブルを結合するときに最適な実行プランを選択できるようになります。

もう 1 つの方法は、REMOTE JOIN を使用することです。私はそれを使用して運が良かったのですが、Aaron Bertrand がここでそれについて素晴らしい記事を書いています。 the-sql-server-remote-join-hint/

ここにMSのドキュメントがあります

リモート

結合操作が右側のテーブルのサイトで実行されることを指定します。これは、左側のテーブルがローカル テーブルで、右側のテーブルがリモート テーブルである場合に便利です。REMOTE は、左側のテーブルの行が右側のテーブルよりも少ない場合にのみ使用してください。右側のテーブルがローカルの場合、結合はローカルで実行されます。両方のテーブルがリモートであるが、データ ソースが異なる場合、REMOTE を指定すると、右側のテーブルのサイトで結合が実行されます。両方のテーブルが同じデータ ソースからのリモート テーブルである場合、REMOTE は必要ありません。結合述語で比較される値の 1 つが、COLLATE 句を使用して別の照合順序にキャストされる場合、REMOTE は使用できません。REMOTE は、INNER JOIN 操作にのみ使用できます。

于 2014-01-07T05:24:10.420 に答える