在使用远程查询和应用where子句时,我对SQL服务器的性能问题感到有些困惑。当我在本地服务器上运行查询时,会使用聚簇索引查找,但是从远程查询不是这种情况。
因此,在本地服务器上运行时需要2秒钟:
SELECT * FROM uv_order WHERE order_id > '0000200000'
但是从远程数据库运行它需要2分钟:
SELECT * FROM RemoteServer.data.dbo.uv_order WHERE order_id > '0000200000'
这里uv_order
是一个相当复杂的视图,但由于在从本地服务器执行时使用索引查找,我不明白为什么它在运行远程查询时不能使用它。这只是应用于视图的接缝,因为在表上执行相同的操作将按预期工作。
为什么会发生这种情况以及如何“修复”它的任何想法?
答案 0 :(得分:2)
你可以像这样修理它
select *
from openquery(
RemoteServer,
'select * from data.dbo.uv_order WHERE order_id > '''0000200000''''
)