リンクサーバーとして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秒
誰かが私に説明したり、なぜ/どのようにこれが起こっているのかを教えてもらえますか?
openquery
を使用すると、クエリ自体がリモートサーバーで実行され、結果のみが返されます。リンクサーバーの場合、ローカルサーバーがすべてのジョブを実行します。あなたはチェックしたいかもしれません http://social.msdn.Microsoft.com/Forums/eu/transactsql/thread/0e68f512-1e19-4c50-b343-219085d70076