次のクエリがあるとします。
SELECT L.id, L.name, R.phone
FROM users L
JOIN [remoteServer].[dbo].[phoneNumbers] R ON R.fk_id=L.id
WHERE L.id=12345
SQL Server 2008 で実行計画を表示すると、ローカル SQL サーバーがリモート テーブル全体にクエリを実行し ( SELECT id, phone FROM [remoteServer].[dbo].[phoneNumbers]
)、フィルタをローカルに適用することがわかります。
SELECT id, phone FROM [remoteServer].[dbo].[phoneNumbers] WHERE id=12345
一致するレコードのみid
が使用されるため、フィルター処理されたリモート テーブル ( ) を照会しないのはなぜですか?
私の質問は次のとおりだと思います: SQL Server は既定でこれを行わないため、どうすればこれを実現できますか?