假设我有一个表,该表的id
是INTEGER GENERATED BY DEFAULT AS IDENTITY
如果将来integer
太小并且需要将id类型从integer
更改为bigint
,我正在寻找如何更改类型的文档。我主要担心更改的时间复杂性,因为当表中的行数接近整数类型可以存储的最大数目时,很可能会发生更改。
以下命令的时间复杂度是多少?
ALTER TABLE project ALTER COLUMN id TYPE BIGINT;
答案 0 :(得分:2)
此命令将必须重写整个表,因为bigint
占用8个字节的存储空间,而不是integer
的4个字节。该表将在进行并发访问时被锁定,因此对于大表,您应该为更长的停机时间做好准备。
如果您希望这样做是必要的,请在表仍然很小的情况下尽快执行更改。