1
表分區的最大好處之一是,「可以在特定分區上重建索引」。SQL Server - 在特定分區上創建非聚簇索引
想象一下,有一個分區表(現在有12個分區),它具有聚簇和少數非聚集索引,所有分區對齊。
我想添加一個新的非聚集索引到表,而不必爲舊分區構建。我只需要這個索引僅用於最後3個分區。
那麼,如何爲12分區表的最後3個分區創建一個新的非聚簇索引?
表分區的最大好處之一是,「可以在特定分區上重建索引」。SQL Server - 在特定分區上創建非聚簇索引
想象一下,有一個分區表(現在有12個分區),它具有聚簇和少數非聚集索引,所有分區對齊。
我想添加一個新的非聚集索引到表,而不必爲舊分區構建。我只需要這個索引僅用於最後3個分區。
那麼,如何爲12分區表的最後3個分區創建一個新的非聚簇索引?
這是不可能的。這會給參數化查詢帶來問題,因爲查詢規劃器從來不會靜態地知道可以使用索引(除非有一個常量表達式謂詞)。
您可以使用`where partitionKey> = startOfSomePartition'創建過濾索引。不過,您的查詢必須靜態包含此謂詞。
您可以嘗試查看兩個具有不同架構的分區表。雖然這不是很方便。
+1 @usr我們在大事實表FK上使用過濾後的索引策略。它可以幫助我們將存儲和維護成本降至最低。由於過濾器必須是靜態的(不能像GETDATE()那樣引用函數),我們通常每週都會刪除並創建一次,並使用動態sql來構建新的索引謂詞定義。此外,分區消除是獲得索引使用的關鍵,但這是每次處理大分區表時都給定的。 – brian
需要注意的一點:使用> =,<=, >,<的篩選索引很好地工作,除非您使用參數,即只有在where子句中使用文字而不是變量或參數時才起作用。 –