2011-06-30 102 views
2

我可以知道include子句如何提高覆蓋索引中的性能?包含子句以創建索引

CREATE NONCLUSTERED INDEX includeIndex 
    ON mytable(COL1) 
    INCLUDE(COL2,COL3,COL3) 

是什麼

CREATE NONCLUSTERED INDEX includeIndex ON mytable(COL1) INCLUDE(COL2,COL3,COL3) 

之間
CREATE NONCLUSTERED INDEX nonincludeIndex ON mytable(COL1,COL2,COL3,COL3) 

感謝那麼後的差額

+0

什麼?你能否重新說明這個問題並設置格式? –

+0

我讀了一些使用下面的定義創建索引使用以下定義「創建非統計索引includeIndex ON mytable(COL1)INCLUDE(COL2,COL3,COL3)」比CREATE非結束索引更好的優化nonincludeIndex ON mytable(COL1,COL2,COL3 ,COL3).......但我無法弄清楚性能如何增加 –

回答

1

如果查詢只做查詢字段索引(包括包含的字段)找到哪些行返回sql處理器fdoes不必加載實際的數據頁面來獲取dat一個。那很簡單。它只能回答來自索引的查詢。

+0

謝謝......但是什麼是差異b/w \ n –

2

您可以通過將非關鍵列添加到非聚集索引的葉級別來擴展非聚簇索引的功能。通過包含非鍵列,您可以創建涵蓋更多查詢的非聚簇索引。這是因爲非關鍵列具有以下好處:

它們可以是不允許用作索引鍵列的數據類型。

在計算索引鍵列數或索引鍵大小時,數據庫引擎不會考慮它們。

當查詢中的所有列作爲關鍵列或非關鍵列包含在索引中時,包含非關鍵列的索引可以顯着提高查詢性能。由於查詢優化器可以找到索引內的所有列值,因此可以提高性能。表或聚集索引數據不會被訪問,從而導致更少的磁盤I/O操作。

http://msdn.microsoft.com/en-us/library/ms190806.aspx