web-dev-qa-db-ja.com

AS400に対するSQL Server OPENQUERYと通常のクエリ

リンクサーバーとしてAS400サーバーがあるSQL Serverデータベースにログインします。

OPENQUERYで選択を実行すると、このAS400サーバーに対してクエリを実行するとはるかに高速になることを発見しました...

SELECT  EMEQP#
FROM _
WHERE EMALOC = '467' AND EMDLCD = 'A' AND EMSTAT NOT IN ('S', 'J', 'V')

実行時間:46秒

SELECT EMEQP#
FROM
OPENQUERY(_, '
SELECT  EMEQP#
FROM _
WHERE EMALOC = ''467'' AND EMDLCD = ''A'' AND EMSTAT NOT IN (''S'', ''J'', ''V'')
')

実行時間:1秒

誰かが私に説明したり、なぜ/どのようにこれが起こっているのかを教えてもらえますか?

5
Theo

openqueryを使用すると、クエリ自体がリモートサーバーで実行され、結果のみが返されます。リンクサーバーの場合、ローカルサーバーがすべてのジョブを実行します。あなたはチェックしたいかもしれません http://social.msdn.Microsoft.com/Forums/eu/transactsql/thread/0e68f512-1e19-4c50-b343-219085d70076

5
a1ex07