想象一下,我有这个查询:
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 默认情况下不这样做?