依鍵值 (通常是日期) 將大量資料水平切分為多個物理表,再透過 UNION ALL 檢視表呈現為單一邏輯表。
| 效益 | 說明 |
|---|---|
| 資料修剪 | 滾動視窗 (如保留 13 個月) 只需 ALTER VIEW 移除最舊分區 + DROP TABLE,秒級完成,避免大量 DELETE 產生記錄與鎖爭用。 |
| 載入加速 | 載入空分區表無索引、無鎖爭用,BULK INSERT 效能極致;再 ALTER VIEW 加入新分區。 |
| 可維護性 | 備份/還原/重建索引/更新統計可針對單一分區並行執行,大幅縮短維護窗口。 |
| 查詢速度 | 優化器依查詢條件 (如 WHERE DateKey BETWEEN ...) 自動排除無關分區 (Partition Elimination),效能等同叢集索引查詢。 |
CREATE VIEW FactSales AS SELECT * FROM FactSales_202301 UNION ALL SELECT * FROM FactSales_202302 ...BULK INSERT FactSales_Staging ... → INSERT INTO FactSales_202312 SELECT * FROM FactSales_Staging → ALTER VIEW FactSales ... ADD FactSales_202312 → DROP TABLE FactSales_Stagingsp_msforeachtable 'DBCC DBREINDEX(''?''); UPDATE STATISTICS ?;' 針對單月分區並行執行。分區帶來管理複雜度 (需自動化腳本管理分區生命週期);若僅為解決資料修剪,可考慮分批 DELETE TOP (1000) 低優先級背景清理,避免建立分區框架。
掌握水平分區設計與自動化運維,是構建 TB 級 SQL Server 數據倉庫的關鍵能力。