分区Postgres表

时间:2019-07-14 03:16:11

标签: postgresql database-partitioning

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

问题是:如何使用列表分区对患者表进行分区?也就是说,对于该表,我将不得不与Doctor表建立直接分区关系,或者将不得不使用中间表,因为在上述两个表之间存在多对多的关系。

随附为说明性图片。

Database Tables

1 个答案:

答案 0 :(得分:1)

对于多对多关系,您将需要一个映射表(是否分区)。 我不会为映射表使用人为的主键,而是使用cachedid_doctor的组合(无论如何它们都是人为的)。 id_patient表也是如此。

由于appointment不属于患者表(也不应该),因此您无法为每个医生对id_doctor表进行分区。你为什么想这么做?分区对于批量删除(在某种程度上可以加快顺序扫描)最有用-是您的目标吗?

有一个广泛的假设,即仅因为较大的表就应该对较大的表进行分区,但事实并非如此。对分区表的索引访问(如果有)比对未分区表的索引访问稍慢。您有数十亿患者吗?