【发布时间】:2015-02-19 15:04:15
【问题描述】:
我有一个架构,其中一个表包含大部分数据,customer,另外三个表的外键引用到 customer.entry_id,这是一个 BIGSERIAL 字段。其他三个表称为location、devices 和urls,我们在其中存储与客户表中特定条目相关的各种数据。
我想将客户表划分为每月的子表,并解决这部分问题; customer 将保持原样,每个月都会有一个表 customer_YYYY_MM 继承自具有正确 CHECK 约束的主表,并将在每个单独的子表上创建索引。数据将被移动到正确的子表,而主表保持为空。
我的问题是关于其他三个表,因为我也想对它们进行分区。但是,它们(根本)没有日期信息,只有对主表中主键的引用。如何设置这些表的约束?如果没有日期信息,它是否有意义或可能?
我的应用程序逻辑知道在哪里插入所有数据(这很简单),但我希望能够执行简单的 SELECT 查询,而无需指定从哪些子表中获取数据。所以这应该像你对非分区表的期望一样工作:
SELECT l.*
FROM customer c
JOIN location l USING entry_id
WHERE c.date_field > '2015-01-01'
【问题讨论】: