傳統關聯式資料庫採用列式儲存:資料以資料列為單位連續寫入頁面(B 樹叢集索引或堆表)。SQL Server 2011 (代號 Denali) 引入直欄儲存索引,將同一欄位的所有值集中儲存在一組頁面中,實現真正的直欄式儲存。
建立直欄索引後,該資料表變為唯讀,不允許 INSERT/UPDATE/DELETE/MERGE/TRUNCATE TABLE。典型應用模式:
DROP COLUMNSTORE INDEX → 載入資料 → CREATE COLUMNSTORE INDEX。| 適用 (OLAP/資料倉庫) | 不適用 (OLTP/交易處理) |
|---|---|
| 大範圍掃描、彙總、群組運算 | 單列點查詢、高頻小範圍存取 |
| 星狀/雪花結構事實表 | 頻繁資料修改的業務表 |
| 僅存取少數欄位的報表查詢 | SELECT * 或需大部分欄位的查詢 |
| 歷史資料、歸檔資料 | 即時決策、高併發交易系統 |
簡單判斷:若查詢模式為「掃描億萬列、只取幾欄、做 SUM/COUNT/AVG」→ 直欄索引大幅加速;若為「按主鍵取單列、更新頻繁」→ 傳統 B 樹更適合。
直欄儲存索引是 SQL Server 邁向混合式交易/分析處理 (HTAP) 的關鍵一步。它以犧牲寫入彈性換取讀取極致效能,完美契合資料倉庫、BI 報告、巨量資料分析場景。正確識別工作負載特徵、配合分區策略管理重建窗口,即可在不改寫應用程式的前提下獲得數量級效能提升。