我有许多带有 INT 类型列的 postgres 表,我需要将其更改为 BIGINT。表的每个分区包含大约 1 亿行,我的意图是分离各个分区 ALTER 列类型,然后重新附加。
我的问题是,需要更新的列已编入索引。删除索引、更改列类型然后重新创建索引可能会更快吗?或者我应该保留索引并更改列类型?
请注意,列值不会改变,只是数据类型(不确定这是否相关!)
谢谢
我有许多带有 INT 类型列的 postgres 表,我需要将其更改为 BIGINT。表的每个分区包含大约 1 亿行,我的意图是分离各个分区 ALTER 列类型,然后重新附加。
我的问题是,需要更新的列已编入索引。删除索引、更改列类型然后重新创建索引可能会更快吗?或者我应该保留索引并更改列类型?
请注意,列值不会改变,只是数据类型(不确定这是否相关!)
谢谢
ALTER 将自动删除并重建索引(所有索引,而不仅仅是在被更改的列上)。自己对过程进行微观管理是没有意义的,除非您想同时构建索引或类似的东西,以便可以在维护窗口之外完成该部分。
这是来自文档
SET DATA TYPE
的摘录: