You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure专用SQL池:将小型聚集列存储索引表改为堆表

将Azure专用SQL池中的CCI表改为堆表的方法

首先明确:无法通过简单的ALTER语句直接将聚集列存储索引(CCI)表修改为堆表,Azure专用SQL池不支持这种直接修改操作,需要通过重建表的方式实现,具体方案如下:

方案一:分步创建堆表并迁移数据

  1. 复制原表结构创建空堆表,指定WITH (HEAP)选项:
CREATE TABLE dbo.NewHeapTable
WITH (HEAP)
AS
SELECT * FROM dbo.ExistingCCITable WHERE 1=0; -- 仅复制表结构,不导入数据
  1. 将原表数据插入新堆表:
INSERT INTO dbo.NewHeapTable
SELECT * FROM dbo.ExistingCCITable;
  1. 验证数据无误后,替换原表(可选,保持表名不变):
-- 重命名原表为备份表
EXEC sp_rename 'dbo.ExistingCCITable', 'dbo.OldCCITable';
-- 将新堆表重命名为原表名
EXEC sp_rename 'dbo.NewHeapTable', 'dbo.ExistingCCITable';
  1. 确认业务正常后,删除旧的CCI备份表:
DROP TABLE dbo.OldCCITable;

方案二:用CTAS直接创建带数据的堆表

这是更高效的方式,一步完成结构复制和数据迁移:

CREATE TABLE dbo.NewHeapTable
WITH (HEAP)
AS
SELECT * FROM dbo.ExistingCCITable;

完成后可通过重命名替换原表,或直接使用新表开展业务。

注意事项

  • 操作前务必备份原表数据,防止意外丢失
  • 原表的索引、主键/外键等约束,需要在新堆表上重新创建
  • 针对超大型表,建议分批次迁移数据,避免占用过多资源影响其他业务

内容的提问来源于stack exchange,提问作者Saurabh Mehta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 07:37:06