數據倉庫面對億級資料量時,傳統優化手段逐漸失效:
核心思想:依據業務鍵值(如機構代碼、日期範圍)將單一大表水平切分為多個同結構小表。查詢時透過 UNION ALL 合併或建立 UNION ALL VIEW,優化器可實現分割裁剪,僅掃描相關分割。
f_policy 查詢回應極慢。branch_id 拆分為 36 個子表 f_policy_01 ~ f_policy_36。CREATE VIEW v_policy_all AS SELECT * FROM f_policy_01 UNION ALL ... UNION ALL SELECT * FROM f_policy_36;| 指標 | 分割前 | 分割後 |
|---|---|---|
| 全表查詢 | 掃描 4 億列,索引無效 | 並行掃描 36 個小表,各自索引有效 |
| 單分公司查詢 | 全表掃描後過濾 | 直接存取單一小表,毫秒級回應 |
| 索引維護 | 單一巨大索引,重建耗時數小時 | 36 個小索引,並行重建,分鐘級完成 |
| 資料清理/歸檔 | DELETE 大量資料產生大量 UNDO/REDO | 直接 TRUNCATE 或 DROP 特定分公司子表,瞬間完成 |
表名_分割值,便於識別。UNION ALL VIEW 供應用透明存取,維護 DML 觸發器將資料導向正確子表。資料分割是處理超大型表的標準架構模式,不僅提升查詢效能,更簡化資料生命週期管理。