【发布时间】:2010-03-16 08:36:42
【问题描述】:
我有一个名为 Table 的表格,其中包含列:
- ID(整数、主键、聚集、唯一索引)
- 文本(varchar 15)
在名为 LS 的 MSSQL 链接服务器上。链接服务器位于同一台服务器计算机上。并且:
当我打电话时:
SELECT ID, TEXT FROM OPENQUERY(LS, 'SELECT ID, TEXT FROM Table')
需要 400 毫秒。
当我打电话时:
SELECT ID, TEXT FROM LS.dbo.Table
需要 200 毫秒
当我在 LS 服务器上直接调用查询时:
SELECT ID, TEXT FROM dbo.Table
需要 100 毫秒。
在很多地方我都读到 OPENQUERY 更快,但在这个简单的情况下它似乎不起作用。当我从另一台服务器而不是直接从 LS 调用此查询时,我该怎么做才能使该查询更快?
【问题讨论】:
-
只有当链接服务器属于不同类型(例如 Oracle)时,我才需要使用 OpenQuery。差异总是那么明显,即。 x2?如果您要发送更大的查询以请求更多数据/更重的过滤器,那么开销是否标记为?
-
@CResults - 当过滤器更复杂时,开销更大,差异来自几次试验的平均值。特定查询有非常不同的时间。
标签: sql-server tsql performance linked-server openquery