PostgreSQL PARTITION 分区表
PostgreSQL 分区表,操作性相当便捷。
但只能在创建时决定是否为分区表,并决定分区条件字段,普通表创建后,不能在修改为分区表。
Note:通过其他方法也可转化为分区表。
和其他数据库一样,分区表作为一个DB的特性,优点自不用说,物理分散,逻辑统一。
必须要注意的一个缺点是:分区表不允许其他表作为外键引用。只能在真实场景业务逻辑上当作外键,设计时论场景再推敲。
同时,在Pg 11以前只能单独为每个分区表建立索引等,且不能在【母表】上建立主键、索引等。
Pg 11以后可以针对“逻辑”分区表(母表)建立索引,分区子表自动创建。
简单Sql:
1 --DROP TABLE dbo.table01; 2 3 CREATE TABLE dbo.table01 ( 4 id bigserial NOT NULL, 5 cre_time timestamp without time zone, 6 note varchar(30) 7 ) PARTITION BY RANGE (cre_time) 8 WITH ( 9 OIDS = FALSE 10 ); 11 12 CREATE TABLE dbo.table01_2018 13 PARTITION OF dbo.table01 14 FOR VALUES FROM ('2018-01-01 00:00:00') TO ('2019-01-01 00:00:00'); 15 16 CREATE TABLE dbo.table01_2017 17 PARTITION OF dbo.table01 18 FOR VALUES FROM ('2017-01-01 00:00:00') TO ('2018-01-01 00:00:00'); 19 20 ALTER TABLE dbo.table01 21 OWNER TO postgres;