我在postgres-DB中有一个现有表。为了演示,它是这样的:
create table myTable(
forDate date not null,
key2 int not null,
value int not null,
primary key (forDate, key2)
);
insert into myTable (forDate, key2, value) values
('2000-01-01', 1, 1),
('2000-01-01', 2, 1),
('2000-01-15', 1, 3),
('2000-03-02', 1, 19),
('2000-03-30', 15, 8),
('2011-12-15', 1, 11);
Run Code Online (Sandbox Code Playgroud)
但是,与这几个值相比,myTable实际上是巨大的,并且还在不断增长。我正在从该表中生成各种报告,但是目前我98%的报告使用一个月,其余查询的工作时间甚至更短。通常,我的查询使Postgres对这个巨大的表进行表扫描,而我正在寻找减少问题的方法。表分区似乎完全适合我的问题。我可以将桌子分成几个月。但是,如何将现有表转换为分区表?该手册明确指出:
无法将常规表转换为分区表,反之亦然
因此,我需要开发自己的迁移脚本,该脚本将分析当前表并将其迁移。需求如下:
myTable覆盖的时间框架是未知的。我该如何迁移要分区的表?