2011-01-12 166 views
1

我正在尋找確認我對數據庫中複合索引的理解 - 特別是與SQL Server 2008 R2有關的情況,如果這有所幫助。複合數據庫索引

我想我理解索引列的順序是至關重要的,如果我有一個索引{ [Name], [Date] },那麼基於WHERE子句的基於[Date]的SELECT將無法使用索引,但索引{ [Date], [Name] }會。如果SELECT基於兩列,則任一索引都可用。

是嗎?使用這種複合索引的好處是,每列使用兩個索引(即{ [Date] }{ [Name] })。

謝謝!

回答

3

不完全是,日期選擇仍然可以使用索引,但不如包含名稱的查詢有效,因爲名稱會限制索引必須搜索多少。

如果您經常對姓名+日期和日期以及姓名分別進行查詢,請爲每個組合使用3個索引。

此外,索引中首次出現的各種字段也更快地限制索引搜索的速度。

你也可以包含一些列,這些數據沒有被索引,但是這些數據是根據索引提取的。

+0

謝謝,這有助於很多 – Barguast 2011-01-12 12:43:29

3

這是正確的。

當複合列的組合選擇性有效地修剪結果集時,組合索引非常有用。

如果向索引(複合或非複合)添加'INCLUDED'列,則可以創建'覆蓋'索引以覆蓋一個或多個查詢,因爲這樣可以避免執行第二次查找以獲取這些列(來自聚簇索引)。

兩個單列索引或組合列的組合索引的選擇由對該表的總查詢工作負載決定。

+0

很高興知道!感謝您的回覆。 – Barguast 2011-01-12 13:01:58