远程查询,视图和where子句性能

时间:2012-11-26 09:33:24

标签: sql-server

在使用远程查询和应用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是一个相当复杂的视图,但由于在从本地服务器执行时使用索引查找,我不明白为什么它在运行远程查询时不能使用它。这只是应用于视图的接缝,因为在表上执行相同的操作将按预期工作。

为什么会发生这种情况以及如何“修复”它的任何想法?

1 个答案:

答案 0 :(得分:2)

你可以像这样修理它

select *
from openquery(
    RemoteServer,
    'select * from data.dbo.uv_order WHERE order_id > '''0000200000''''
)