Sql server 在大型现有表上创建列存储索引的最有效方法是什么?

Sql server 在大型现有表上创建列存储索引的最有效方法是什么?,sql-server,columnstore,sql-server-2019,Sql Server,Columnstore,Sql Server 2019,我的数据仓库中有一个300M+行的表,非常适合于集群列存储索引,但我不确定如何应用它 我应该创建一个带有columnstore索引的空表副本,并将数据选择到其中,还是应该删除现有表上的所有普通索引,并直接将columnstore索引添加到其中 我有12个CPU内核和100GB的RAM专用于SQL Server 2019。我将在维护窗口期间进行更新,并将最大服务器资源分配给此任务。哪种添加索引的方法会更快?阅读Microsoft文档,我似乎将采用第三种方法。自SQL Server 2016以来,您

我的数据仓库中有一个300M+行的表,非常适合于集群列存储索引,但我不确定如何应用它

我应该创建一个带有columnstore索引的空表副本,并将数据选择到其中,还是应该删除现有表上的所有普通索引,并直接将columnstore索引添加到其中


我有12个CPU内核和100GB的RAM专用于SQL Server 2019。我将在维护窗口期间进行更新,并将最大服务器资源分配给此任务。哪种添加索引的方法会更快?

阅读Microsoft文档,我似乎将采用第三种方法。自SQL Server 2016以来,您不必删除现有索引,事实上,它们对ColumnStore索引非常有用

我要做的是在现有“普通”行存储索引的顶部创建一个聚集的列存储索引,而不删除它们,并使用DROP existing选项

启用此选项后,SQL Server将使用现有的行存储索引对ColumnStore中的数据进行排序,其行为与常规索引类似。它甚至保留了索引的名称,并保留了所有现有的元数据和统计信息。使用现有索引的执行计划将继续有效

这样,我就不必牺牲使用集群主键和针对特定查询调整的单个索引所获得的单值查找性能,它们只需合并到ColumnStore中并继续可用!太棒了