SQL Server 2005 引入資料表/索引分區,將大型表水平切分至多個檔案群組,查詢與維運可針對單一分區操作,提升效能與管理性。
分區適用條件
- 表包含大量資料且以多種方式存取 (如近期熱資料頻繁寫入、歷史資料唯讀)。
- 查詢/維運無法在預期時限完成,或維護窗口不足。
實測案例
- 帳本表 200 萬筆,以會計月份 (
FiscalPeriod) 為分區鍵,建立 12 個分區對應 12 個檔案群組。
- 測試預存程序
proc_partitiontest (含公司、機構、年度、期別、倉庫等參數)。
執行結果比較
| 指標 | 分區前 | 分區後 |
| 執行時間 | 52 秒 | 47 秒 |
| Logical Reads | 1,735 | 76 |
| Scan Count | 2 | 2 |
分析與建議
- Logical Reads 大幅下降 (95%+),證明分區消除有效運作 (僅掃描相關月份分區)。
- 時間僅略微改善,可能受限於:
• 查詢未完全落在單一分區 (跨分區)
• 連接、排序、彙總等其他運算子成本佔大頭
• 統計資料不準導致執行計畫非最佳
- 關鍵成功因素:
• 分區鍵必須出現在查詢 WHERE/JOIN 條件 (Partition Elimination)
• 檔案群組分散於不同實體磁碟 (I/O 平行)
• 統計資料同步更新
• 索引對齊分區