假设我有一个表,其中id
是INTEGER GENERATED BY DEFAULT AS IDENTITY
类型的。
我想记录如何更改类型,如果将来integer
太小,我需要将id类型从integer
更改为bigint
。我主要担心更改的时间复杂度,因为它可能会发生在表中的行数接近整型类型可以存储的最大数字时。
以下命令的时间复杂度是多少?
ALTER TABLE project ALTER COLUMN id TYPE BIGINT;
假设我有一个表,其中id
是INTEGER GENERATED BY DEFAULT AS IDENTITY
类型的。
我想记录如何更改类型,如果将来integer
太小,我需要将id类型从integer
更改为bigint
。我主要担心更改的时间复杂度,因为它可能会发生在表中的行数接近整型类型可以存储的最大数字时。
以下命令的时间复杂度是多少?
ALTER TABLE project ALTER COLUMN id TYPE BIGINT;
这个命令将不得不重写整个表格,因为bigint
需要8个字节的存储空间,而不是integer
的4个字节。在执行此操作时,该表将被锁定以防止并发访问,因此对于大型表格,您应该准备好更长的停机时间。
如果您预计可能需要这样做,请在表格还很小的时候立即进行更改。