1

次のクエリがあるとします。

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 は既定でこれを行わないため、どうすればこれを実現できますか?

4

2 に答える 2

0

ローカル インスタンスには、外部オブジェクトの構造についての手がかりがありません。それは、ブラック ボックスに手を伸ばして、人々のテーブルからすべての "Smith's" を取得するように依頼するようなものです。どこから始めればよいかわからないので、最初にすべて引き出して、表全体を確認できるようにします。

于 2013-10-03T02:00:59.633 に答える