資料倉儲建模 中階
資料倉儲分區與叢集(Partitioning & Clustering)
請說明資料倉儲中分區與叢集的優化策略。
分區(Partitioning)
將大型表按某欄位值(通常是日期)分割為多個邏輯區塊。查詢時若 WHERE 子句包含分區欄位,只掃描相關分區(Partition Pruning),大幅減少資料掃描量。
常用欄位:event_date、created_at
以 BigQuery 為例:分區表的查詢費用 = 只掃描到的分區資料量。
叢集(Clustering)
在分區內,按一或多個欄位對資料進行排序儲存(類似索引)。查詢時若 WHERE 或 GROUP BY 包含叢集欄位,可以跳過大量資料塊。
常用欄位:user_id、country、category
最佳實踐
- 分區欄位:高基數的時間欄位,確保每個分區不會太小也不會太大。
- 叢集欄位:查詢中常見的 filter/group by 欄位,選擇基數適中的欄位。
- 兩者可同時使用:先按日期分區,再在分區內按 user_id 叢集。
- 避免過度分區(小分區過多反而影響效能)。
✦ AI 模擬面試
輸入你的答案,AI 即時分析精準度與改進空間
登入後即可使用 AI 評分
