Sql-Server
聚集和列儲存索引
我剛剛開始了一份新工作,我們有許多來自 ETL 流程的表。我被告知不要在任何表上放置任何列儲存或聚集索引,因為伺服器沒有資源 (CPU)。所以基本上一切都是堆。許多表上都有非聚集索引。我們從許多源系統中獲取數據,在數據到達後,我們轉換數據並將其組合…
我只是想听聽在某些設置中不使用任何列儲存或聚集索引是否正確。當表用於分析時,是否需要更多 CPU 才能使用聚集索引?
幾乎每個實施決策都是競爭因素之間的權衡。建構列儲存索引是 CPU 密集型的,但之後涉及多行的查詢很快,更新很慢。平均而言,哪個對您的工作量最重要?是否有一個時間視窗可以在不破壞系統其他部分的情況下消耗該數量的 CPU?額外的費用是否在未來的福利中償還?列儲存可以解決什麼問題,系統的其他方面是否已經解決了這個問題?
你提到ETL。通常,此類表僅作為掃描處理,其中每一行都被每個操作所觸及。在這種情況下,索引會減慢處理速度,因為除了表之外還必須寫入它們。
目前的限制可能是有原因的。了解它們為什麼被放置。如果這些情況不再成立(可能是伺服器版本升級或現在更好的硬體),請嘗試在測試環境中進行實驗。