如何忽略作为columnstore索引的一部分,因为数据类型问题而无法参与的列
问题描述:
我有一个现有的表,其中有超过100个列。现在我正试图在同一个表上创建一个聚集的列存储索引,但由于某些列由于限制而不符合数据类型条件,所以会引发错误。有没有办法忽略不符合“集群ColumnStore索引”要求的列。谢谢。如何忽略作为columnstore索引的一部分,因为数据类型问题而无法参与的列
SQL for creating CCSI :-
CREATE CLUSTERED COLUMNSTORE INDEX CCSI
ON [Dbname].[dbo].[testtable]
WITH (DROP_EXISTING = OFF);
Error :-
The statement failed. Column 'Column1' has a data type that cannot participate in a columnstore index. Omit column 'Column1'.
答
在使用群集ColumnStore索引时,不能忽略列。对于选定列你必须去非聚集列存储索引如下:
CREATE NONCLUSTERED COLUMNSTORE INDEX CCSI
ON [Dbname].[dbo].[testtable] (Col1, Col2...required columns)
WITH (DROP_EXISTING = OFF);
+0
我正在遍历表列表并想写我的解决方案通用,而不是硬编码的列。每个表都有自己的列。 – Teja
+0
您可能需要使用该表的sys.columns迭代所有列名并生成该列,因为无法排除集群列存储索引中的列 –
只要你创建的列存储索引,则不能包括具有不通过列存储索引支持的数据类型的任何列 - https://开头raresql。 com/tag/create-index-statement-failed-column-has-a-data-type-that-can-participate-in-a-columnstore-index-omit-column/ –