Sql server SQL Server群集列存储索引插入

Sql server SQL Server群集列存储索引插入,sql-server,clustered-index,columnstore,Sql Server,Clustered Index,Columnstore,我正在使用SQL Server 2017。我想使用按列yerID的聚集列存储索引(CCI)行组消除。之前,我在YearID上构建聚集rowstore索引,并在上面构建MAXDOP=1的CCI,但它开始计时。我还有其他选择吗?现在,我重写了脚本,从一开始就创建了CCI,并将查询更改为一系列插入,如下所示: INSERT INTO CCITable() SELECT YearID, otherColums FROM ... WHERE YearID = 1 INSERT INTO CCITable

我正在使用SQL Server 2017。我想使用按列yerID的聚集列存储索引(CCI)行组消除。之前,我在YearID上构建聚集rowstore索引,并在上面构建MAXDOP=1的CCI,但它开始计时。我还有其他选择吗?现在,我重写了脚本,从一开始就创建了CCI,并将查询更改为一系列插入,如下所示:

INSERT INTO CCITable()
SELECT YearID, otherColums
FROM ...
WHERE YearID = 1

INSERT INTO CCITable()
SELECT YearID, otherColums
FROM ...
WHERE YearID = 2
...
INSERT INTO CCITable()
SELECT YearID, otherColums
FROM ...
WHERE YearID = N

我还注意到,使用INSERT INTO CCITable()和(TABLOCK)进行的1次迭代执行得更快,但其中许多迭代执行得更慢。此脚本是唯一使用CCITable的查询。知道为什么吗?

据我所知,没有任何其他方法可以保证向列存储索引中插入顺序。希望微软能尽快实施!唯一的另一种方法是开始使用分区,这样就可以强制对数据进行非常粗略的排序。理论上,这应该允许您使用现有方法重建单个分区据我所知,没有任何其他方法可以保证向列存储索引中插入顺序。希望微软能尽快实施!唯一的另一种方法是开始使用分区,这样就可以强制对数据进行非常粗略的排序。从理论上讲,这应该允许您使用现有方法重建单个分区