使用非聚集列存储索引
介绍在SQL Server表上使用非聚集列存储索引的关键任务。
有关列存储索引的概述,请参阅 Columnstore Indexes Described。
有关聚集列存储索引的信息,请参阅 Using Clustered Columnstore Indexes。
目录
创建非聚集列存储索引
若要将数据加载到非聚集列存储索引中,请先将数据加载到存储为堆或聚集索引的传统行存储表中,然后使用 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;
将数据加载到不含列存储索引的临时表中。 在临时表上生成列存储索引。 将临时表切换到主表的一个空分区中。
将分区从具有列存储索引的表切换到一个空的临时表中。 如果在临时表上有某个列存储索引,则禁用该列存储索引。 执行任何更新。 生成(或重新生成)列存储索引。 将临时表切换回主表的(现在为空的)分区中。