好的,这是问题。我有一些我创建的表
创建表数学(id1 bytea,id2 bytea,评论文本[])
还有更多的列,但这无关紧要。创建后,我在其中插入约 500k 行并通过几个查询修改它们,每个查询都包含
array_append(comments, '关于当前计算步骤的一些评论')
毕竟完成后,我得到大约 1.6Gb 的表大小
如果那时我跑
ALTER TABLE 数学 ALTER COLUMN comments TYPE varchar[] USING comments::varchar[];
表大小显着下降,约为 300Mb
为什么会这样?以及如何在不更改列类型的情况下获得类似的结果?
注意:我尝试在创建时将列设置为 varchar[] 类型,但在完成所有查询后,它的大小仍然为 1.6Gb,并且转换为 text[] 再次将其减小到 300Mb。