描述在 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;将数据加载到没有列存储索引的临时表中。 在暂存表上生成列存储索引。 将暂存表移动到主表的空分区。
将具有列存储索引的表中的分区切换到一个空的暂存表。 如果暂存表上有列存储索引,请禁用列存储索引。 进行更新。 创建(或重新创建)列存储索引。 将临时表切换回主表的(现在为空)分区。