插入到使用 Clustered Columnstore 索引的 table

Insert into table that uses Clustered Columnstore index

我想插入到使用聚集列存储索引的 table 中。 我的逻辑如下。首先,我检查 table 是否有聚集列存储索引,然后删除索引,插入新数据,最后再次创建聚集列存储索引。

这是我的示例代码。

declare @sql as nvarchar(max)
if exists (select i.name as indexname, 
       t.name as tablename
from   sys.indexes i
  join sys.tables t on i.object_id = t.object_id
where  i.type in (5, 6) and t.name = 'cci_table')
begin
        set @sql = '
                    DROP CLUSTERED COLUMNSTORE INDEX cci ON dbo.cci_table'
        print @sql

        /** insert data to cci_table **/

        set @sql = '
                    CREATE CLUSTERED COLUMNSTORE INDEX cci ON dbo.cci_table'  
        print @sql
end
else
begin
        set @sql = '
                    CREATE CLUSTERED COLUMNSTORE INDEX cci ON dbo.cci_table'  
        print @sql
end

这样做是不是一个好方法? 是否有不同的方法在聚集列存储索引中插入数据 table,或者我是否必须删除当前索引然后重新创建索引?

不需要删除然后创建列存储索引,因为使用列存储索引的 table 是 updatable。 这意味着我可以将新数据插入现有的列存储 table 如果索引存在没有问题。

 declare @sql as nvarchar(max)
    if exists (select i.name as indexname, 
           t.name as tablename
    from   sys.indexes i
      join sys.tables t on i.object_id = t.object_id
    where  i.type in (5, 6) and t.name = 'cci_table')
    begin

            /** insert data to cci_table **/

    end
    else
    begin
            set @sql = '
                        CREATE CLUSTERED COLUMNSTORE INDEX cci ON dbo.cci_table'  
            print @sql

            /** insert data to cci_table **/

    end