首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2012 Columnstore Index 列存儲索引初體驗

     編輯:關於SqlServer

Columnstore Index 核心優勢

  • 列式儲存:同一欄位資料連續儲存,查詢僅讀取所需欄位,大幅減少 I/O。
  • 高壓縮率:同質資料壓縮效果極佳,通常 4–10 倍壓縮。
  • 緩衝區命中率高:熱門欄位可載入更多頁面至記憶體。

關鍵限制(SQL Server 2012)

  1. 每張表僅能建立一個 Columnstore Index。
  2. 不支援篩選索引。
  3. 必須與分區對齊。
  4. 建立後資料表變為唯讀(不可 INSERT/UPDATE/DELETE/MERGE)。
  5. 不支援計算欄位、INCLUDE 子句。

適用場景

OLAP、資料倉庫、唯讀報表、大量掃描聚合查詢。中小型 OLTP 環境不適用。

建立與測試

CREATE TABLE FactSales (
    SaleDate DATE,
    ProductKey INT,
    SalesAmount MONEY
);

CREATE NONCLUSTERED COLUMNSTORE INDEX idx_cs_FactSales
ON FactSales (SaleDate, ProductKey, SalesAmount);

-- 嘗試插入將失敗
INSERT INTO FactSales VALUES ('2023-01-01', 1, 100); -- 錯誤:唯讀

變更資料的替代方案

  • 分區切換:將新資料載入暫存表 → 建立 Columnstore → SWITCH 進主表分區。
  • 定期重建索引(DROP/CREATE)納入 ETL 窗口。

Columnstore vs Rowstore 儲存對比

建立 Columnstore 後插入失敗

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved