如何使用中间表对Postgres表进行分区

时间:2018-08-09 04:23:44

标签: sql postgresql postgresql-10

我正在使用postgres 10 db。

我的客户表由以下几列组成

custid (primary key),
name,
phonenumber,
email,
dateofbirth,
address,
city,
country,
status(boolean)
Join_Date(Date)

我表中有数百万条记录。我想通过Join_Date和Intermediate table在不同月份的基础上对表进行分区(2018年1月为一个分区,2018年2月为一个分区,.. etc等)。

我还想编写自动化脚本,以便在月底时该表必须创建上个月的另一个分区

2 个答案:

答案 0 :(得分:0)

尝试此方法:

  1. 首先,在您的客户表中创建一个附加列 要进行逻辑分区。
  2. 然后使用客户更新该列 和中间表
  3. 更新后截断表

每个月您都可以运行此脚本,这将为您提供逻辑分区。

update customer set partition_column=to_char(Join_Date, 'YYYY-MM')
join intermediate_table on intermediate_table.custid=customer.custid
and  intermediate_table.Join_Date=customer.Join_Date

truncate table intermediate_table

答案 1 :(得分:0)

Postgres文档中有一个针对您问题的示例。

PostgreSQL: Documentation: 10: 5.10. Table Partitioning