我的同事告诉我,任何使用链接服务器的查询都首先将数据从远程服务器传输到运行查询的服务器,然后应用过滤器。例如,如果我有以下查询:
select id, region
from linked_server.mydb.dbo.product
where id = 1
该查询会将远程服务器的产品表中的所有数据带到本地服务器并应用ID=1
。我在 Microsoft 网站上找不到此信息。这是真的?
我的同事告诉我,任何使用链接服务器的查询都首先将数据从远程服务器传输到运行查询的服务器,然后应用过滤器。例如,如果我有以下查询:
select id, region
from linked_server.mydb.dbo.product
where id = 1
该查询会将远程服务器的产品表中的所有数据带到本地服务器并应用ID=1
。我在 Microsoft 网站上找不到此信息。这是真的?
这取决于,但它可能会发生。访问链接服务器的查询的执行计划中有两个主要操作:
Remote Scan
和Remote Query
。根据优化器可用的信息、远程端涉及的表上的索引以及查询本身,
Remote Scan
可能会选择一个操作来扫描远程端的整个表,并返回所有数据从它穿过链接服务器,然后在本地端过滤它。通过适当的索引和编写良好的查询,可以影响优化器使用通常更有效的 a 操作
Remote Query
,该操作将在远程端执行过滤器,然后通过链接服务器返回数据。Remote Query
我个人发现,当数据在远程端被正确索引时,您通常可以影响优化器使用更有效的操作,并且有问题的查询通过这些索引字段进行过滤,或者至少通过表的主键进行过滤。您可能会在高效轮询远程数据源中找到有关该主题的更多有用信息。