插入到使用 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
我想插入到使用聚集列存储索引的 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