我想修改包含超过 2500 万条记录的大表上的列。我正在使用 sybase 12.5.4。我已经阅读了这些帖子
和
我目前的策略是
- 删除所有非聚集索引
- 删除聚集索引
- Alter table modifcy column varchar (32) -- 列当前为 char(20)
- 重新创建聚集索引
- 重新创建非聚集索引
是否有意义。有更快的方法吗?
编辑 :
- 表数据大小:16.7 GB
- 总行数:25835155
- 平均行大小:0.64 KB
- 8 非聚集索引
- 是的,我要更改的列是 2 列 NC 索引中的第二列
您应该只需要删除并重新创建受影响的 NC 索引。
话虽如此,在测试服务器上,您可以看到这样做与删除上面所有索引的策略相比的差异。
我认为删除/创建单个索引总体上会更快,因为否则数据将移动两次:一次 char 到 varchar,另一个用于构建聚集索引。然后你有 NC 创建开销。