2010-03-16 77 views
2

我有一個名爲的列表:一個MSSQL鏈接服務器上如何優化簡單的鏈接服務器選擇查詢?

  • ID(INT,主鍵,聚簇,唯一索引)
  • TEXT(VARCHAR 15)

稱爲LS。鏈接服務器位於同一臺服務器計算機上。和:

當我打電話:

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?

+1

我只有在鏈接服務器是不同類型的時候才使用OpenQuery,例如Oracle。是不同的總是那標記即。 X2?如果您要發送更大的查詢請求更多的數據/更重的過濾器是標記的開銷? – CResults 2010-03-16 08:45:39

+0

@CResults - 當過濾器更復雜時,過度更大,差異來自多次平均測試。特定的查詢有很多不同的時間。 – 2010-03-16 08:51:04

回答

1

SELECT ID, TEXT FROM OPENQUERY(LS, 'SELECT ID, TEXT FROM dbo.Table')如何使用該模式進行查詢等效?

反正閱讀本article from Linchi Shea有關鏈接服務器

注:鏈接的服務器調用總是會比直接調用慢。從SQL Server到SSMS現在首先會經過另一個SQL Server實例,所以當然會比較慢。