想象一下,我有這個疑問:爲什麼來自遠程表的連接如此之慢?
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默認不這樣做?
也許你可以探索'加入提示'。從未使用過它,但它可能有幫助。 http://technet.microsoft.com/en-us/library/ms173815.aspx –
'REMOTE'提示應該可以完成這項工作。 – a1ex07
@ a1ex07你是對的。我在這裏試過了,這就是要走的路。 –