2011-08-06 48 views
0

考慮一個帶有位列的表,該列指示大多數項目處於非活動狀態(關閉)時對象是處於活動狀態還是非活動狀態。位列上的索引

我的理解是,由於該列(2)的不同值的數量有限,因此SQL引擎發現執行表掃描以查找未清項目而不是試圖對位列進行索引更有效。

SQL 2008有一項新功能,允許在索引上使用過濾器。在不瞭解它的內部知識的情況下,我會假設索引只有在符合過濾條件時才包含對記錄的引用,並且這種方法將提供一種檢索所有活動記錄的有效方法,而不必求助於拆分將活動記錄分成不同的表或分區。

我曾經將打開的記錄記錄的主鍵放到我用來識別活動記錄的表中,然後將主表加入到主表中以僅返回活動記錄。

爲什麼在這種情況下使用過濾索引不適合在這種情況下使用過濾索引是否有任何理由?

回答

3

Active位字段的過濾索引是一個有效的選擇。

你可能會想添加特定UPDATE STATISTICS爲 過濾索引(特別是在非易失性數據)特異性 與FULLSCAN更新他們的統計。好消息是,他們 可能是較小的索引(因此更容易/成本更低 統計更新)

這是因爲更新的統計閾值是基於底層柱,而不是過濾索引上僅值。

Ref