如何忽略作为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'. 
+0

只要你创建的列存储索引,则不能包括具有不通过列存储索引支持的数据类型的任何列 - https://开头raresql。 com/tag/create-index-statement-failed-column-has-a-data-type-that-c​​an-participate-in-a-columnstore-index-omit-column/ –

在使用群集ColumnStore索引时,不能忽略列。对于选定列你必须去非聚集列存储索引如下:

CREATE NONCLUSTERED COLUMNSTORE INDEX CCSI 
ON [Dbname].[dbo].[testtable] (Col1, Col2...required columns) 
WITH (DROP_EXISTING = OFF); 
+0

我正在遍历表列表并想写我的解决方案通用,而不是硬编码的列。每个表都有自己的列。 – Teja

+0

您可能需要使用该表的sys.columns迭代所有列名并生成该列,因为无法排除集群列存储索引中的列 –