postgresql postgres在非分区表上添加分区支持

sulc1iza  于 2024-01-07  发布在  PostgreSQL
关注(0)|答案(2)|浏览(169)

我有一个已经变得太大的表,我想从时间戳字段中启用当前年份的分区。我该怎么做,我在文档中找不到任何东西,是否不可能在创建后对表进行分区?
ALTER TABLE appointment PARTITION BY RANGE(start_on)->不起作用。

6ovsh4lw

6ovsh4lw1#

根据文件:
无法将常规表转换为分区表,反之亦然。但是,可以将现有的常规表或分区表添加为分区表的分区,或者从分区表中删除分区,将其转换为独立表。
因此,您可能希望创建一个新的分区表,并将旧表作为(默认)分区附加到它。

rjzwgtxy

rjzwgtxy2#

你会想要这样的东西:

alter table appointment add constraint starton check (start_on >= $1 and start_on < $2) not valid;
alter table appointment validate constraint starton;
create table new_appt (like appointment) partition by range (start_on);
alter table new_appt attach partition appointment for values from ($1) to ($2);

字符串
它可能会更复杂,因为你还需要处理索引,外键等。当然,你需要提供$1和$2,至少要和表中现有的范围一样宽。

相关问题