描述在 SQL Server 數據表上使用非叢集數據行存放區索引的關鍵工作。
如需數據行存放區索引的概觀,請參閱 描述的數據行存放區索引。
如需叢集數據行存放區索引的相關信息,請參閱 使用叢集數據行存放區索引。
內容
建立非叢集數據行存放區索引
若要將數據載入非叢集數據行存放區索引,請先將數據載入儲存為堆積或叢集索引的傳統數據列存放區數據表,然後使用 CREATE COLUMNSTORE INDEX (Transact-SQL) 來建立數據行存放區索引。
變更非叢集列存儲索引中的數據
一旦您在數據表上建立非叢集數據行存放區索引,就無法直接修改該數據表中的數據。 具有 INSERT、UPDATE、DELETE 或 MERGE 的查詢將會失敗並傳回錯誤訊息。 若要新增或修改資料表中的數據,您可以執行下列其中一項動作:
停用列存儲索引。 然後,您可以更新資料表中的數據。 如果您停用資料行存放區索引,您可以在完成更新數據時重建數據行存放區索引。 例如:
ALTER INDEX mycolumnstoreindex ON mytable DISABLE; -- update mytable -- ALTER INDEX mycolumnstoreindex on mytable REBUILD卸除數據行存放區索引、更新數據表,然後使用 CREATE COLUMNSTORE INDEX 重新建立數據行存放區索引。 例如:
DROP INDEX mycolumnstoreindex ON mytable -- update mytable -- CREATE NONCLUSTERED COLUMNSTORE INDEX mycolumnstoreindex ON mytable;將數據載入沒有列存儲索引的暫存表。 在暫存表上建置列存儲索引。 將臨時表移入主資料表的空白分割區。
將具有列存儲索引的數據表中的某個分割區切換到空的暫存表。 如果臨時表上有數據行存放區索引,請停用數據行存放區索引。 執行任何更新。 建置 (或重建) 資料行存放區索引。 將階段表切換回主表中(現在是空的)的分區。