分区 Postgres table

Partitioning Postgres table

我正在 Postgres 11 中构建数据库,我想通过分区 table 来分割信息。约会 table 已经按日期范围分区,我也想对患者 table 进行分区;每个医生对患者进行分区。

问题是:如何使用列表分区对患者 table 进行分区?也就是说,这个table我就得和医生table做一个直接的分区关系,不然就得用中间的table,因为两者之间tables 存在多对多的关系。

附件是说明性图片。

对于 many-to-many 关系,您将需要一个映射 table,分区与否。 我不会为映射 table 使用人工主键,而是 id_doctorid_patient 的组合(无论如何它们都是人工的)。 appointment table.

也是如此

由于 id_doctor 不是患者 table 的一部分(而且不应该是),因此您不能为每个医生划分 patient table。你为什么想这么做?分区主要用于大量删除(并且在某种程度上用于加速顺序扫描)——你的 objective?

有一个 wide-spread 假设认为更大的 table 应该被分区只是因为它们很大,但事实并非如此。对分区 table 的索引访问(如果有的话)比对 non-partitioned table 的索引访问稍慢。您有数十亿患者吗?