如何删除表上的聚集列存储索引?
我试图改变一列的长度,但得到这个错误:
语句失败,因为辅助字典达到了最大大小限制。
请考虑删除列存储索引,更改列,然后创建新的列存储索引。
我有一张表,大概是这样的:
CREATE TABLE [dim].[Ticket]
(
[ID] [bigint] NULL,
[Rev] [int] NULL,
[Timestamp] [datetime2](7) NULL,
[Title] [varchar](260) NULL,
[Description] [varchar](4005) NULL
)
WITH
(
DISTRIBUTION = HASH ( [ID] ),
CLUSTERED COLUMNSTORE INDEX
)
当我尝试这个建议的变体时:
https://learn.microsoft.com/en-us/sql/t-sql/statements/drop-index-transact-sql?view=sql-server-ver16
我只是得到错误。
1条答案
按热度按时间flseospp1#
我检查了一下,这也适用于Synapse。
第一个月
那就放下
drop index ClusteredIndex_fdddc3c574214a2096190cbc54f58cc4 on dim. Ticket
这样就有了一个堆。当你准备好重新压缩表的时候
create clustered columnstore index cci_dim_ticket on dim.Ticket
但是使用CTAS创建一个新表,然后重命名并删除旧表会更有效,删除CCI实际上需要将表重写为未压缩的堆,使用CTAS可以跳过这一步。