Sql-Server
每天被截斷和收費的表的索引優化
我是最近招聘的數據工程師,我已經制定了一堆計劃每天執行的 ETL 管道,目標表被截斷並再次收費。
當我到達時,我發現其他 ETL 也以每天的方式執行,但是當我檢查索引上的碎片百分比時,比率太高了,所以我正在考慮為所有索引創建一個優化任務。
大多數聚集索引(主鍵)都做得很好,但非聚集索引受到高度碎片的影響,我應該如何以及何時重建/重組索引?在載入新數據之後還是之前?
我會這樣做,
- 在重新載入之前截斷表。
- 編寫現有的索引定義並刪除現有的。
- 執行重新載入應該*比以前快得多,*因為表上沒有預先存在的索引。
- 然後,使用從步驟 (2) 中提取的定義重新創建索引。
優點:
- 快速載入時間
- 控制您關心的碎片。
缺點:
- 每次您必須重新創建索引。
注意:如果完成時間是一個因素,那麼您可能需要嘗試兩種方法(重新創建與重新建構)並查看最適合您的方法。