Index

數據倉庫索引方法 - 驗證

  • November 8, 2016

您能否看看我在下面的數據倉庫索引(SQL Server 2014 SP1 Ent)的方法並告訴我它是正確的還是應該改變它?(我們的數據倉庫大部分時間用於 SSAS Cube,有時用於直接報告)

我的索引方法:

  • 所有主鍵(在維度表中)都有一個聚集索引
  • 對於更大的維度表(50k+ 行),我對每個常用列都有一個專用的非聚集索引
  • 所有 Fact 表都實現了 PK 聚集索引(在 FactTableKey 等單個非 FK 列上)——但我不應該把它放在那裡
  • 所有外鍵(在事實表中)都有一個專用的非聚集索引(每一個 FK 列)
  • 此外,我正在考慮在 Fact 表上實現 CLUSTERED COLUMNSTORE INDEX,而不是為每個 FK 執行許多非聚集索引 - 但在這種情況下,我認為這是不推薦的解決方案

此外,在我使用 Visual Studio SSDT 的測試實驗室中,我嘗試將 CCI 索引放在屬於 FILEGROUP 的 Fact 表上,但我收到錯誤資訊,提示我無法在屬於 FILEGROUP 的表上使用 CCI。奇怪的是,我可以直接從 SSMS 創建這樣的 CCI。Visual Stusio 問題或 SSMS 錯誤?

您提到您為事實表中的每個外鍵添加了單列索引。通常至少有一些外鍵具有低基數,因此它們本身在索引中可能沒有用。 https://www.ibm.com/developerworks/data/library/techarticle/dm-1309cardinal/

作為多列索引的一部分,它們可能更有用,您可以根據您期望使用者查詢表的方式來設計該索引。

如果您的工作負載適合它,則應在大型維度表和事實表上考慮非聚集列儲存索引。它們非常適合數據倉庫工作負載。http://www.nikoport.com/2016/03/07/columnstore-indexes-part-79-loading-data-into-non-updatable-nonclustered-columnstore/

由於您使用的是 2014,因此如果您想保留約束和其他索引,那麼非集群是唯一的選擇。

引用自:https://dba.stackexchange.com/questions/154594