我正在用 Postgres 11 建立一个数据库,我想通过分区表来分割信息。约会表已经按日期范围分区,我也想对患者表进行分区;每个医生对患者进行分区。
问题是:如何用列表分区对患者表进行分区?也就是说,对于这张表,我必须与医生表建立直接分区关系,否则我将不得不使用中间表,因为这两个表之间存在多对多关系。
附件是说明性图像。
最佳答案
对于多对多关系,您将需要一个映射表,分区与否。
我不会为映射表使用人工主键,而是使用 id_doctor
和 id_patient
的组合(无论如何它们都是人工的)。 appointment
表也是如此。
由于 id_doctor
不是患者表的一部分(也不应该是),您不能为每个医生划分 patient
表。你为什么想这么做?分区主要用于大量删除(并且在某种程度上用于加速顺序扫描)——这是您的目标吗?
有一个广泛的假设,即更大的表应该被分区只是因为它们很大,但事实并非如此。对分区表的索引访问(如果有的话)比对非分区表的索引访问稍慢。您有数十亿患者吗?
关于postgresql - 分区 Postgres 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57024325/