分区 Postgres table
Partitioning Postgres table
我正在 Postgres 11 中构建数据库,我想通过分区 table 来分割信息。约会 table 已经按日期范围分区,我也想对患者 table 进行分区;每个医生对患者进行分区。
问题是:如何使用列表分区对患者 table 进行分区?也就是说,这个table我就得和医生table做一个直接的分区关系,不然就得用中间的table,因为两者之间tables 存在多对多的关系。
附件是说明性图片。
对于 many-to-many 关系,您将需要一个映射 table,分区与否。
我不会为映射 table 使用人工主键,而是 id_doctor
和 id_patient
的组合(无论如何它们都是人工的)。 appointment
table.
也是如此
由于 id_doctor
不是患者 table 的一部分(而且不应该是),因此您不能为每个医生划分 patient
table。你为什么想这么做?分区主要用于大量删除(并且在某种程度上用于加速顺序扫描)——你的 objective?
有一个 wide-spread 假设认为更大的 table 应该被分区只是因为它们很大,但事实并非如此。对分区 table 的索引访问(如果有的话)比对 non-partitioned table 的索引访问稍慢。您有数十亿患者吗?
我正在 Postgres 11 中构建数据库,我想通过分区 table 来分割信息。约会 table 已经按日期范围分区,我也想对患者 table 进行分区;每个医生对患者进行分区。
问题是:如何使用列表分区对患者 table 进行分区?也就是说,这个table我就得和医生table做一个直接的分区关系,不然就得用中间的table,因为两者之间tables 存在多对多的关系。
附件是说明性图片。
对于 many-to-many 关系,您将需要一个映射 table,分区与否。
我不会为映射 table 使用人工主键,而是 id_doctor
和 id_patient
的组合(无论如何它们都是人工的)。 appointment
table.
由于 id_doctor
不是患者 table 的一部分(而且不应该是),因此您不能为每个医生划分 patient
table。你为什么想这么做?分区主要用于大量删除(并且在某种程度上用于加速顺序扫描)——你的 objective?
有一个 wide-spread 假设认为更大的 table 应该被分区只是因为它们很大,但事实并非如此。对分区 table 的索引访问(如果有的话)比对 non-partitioned table 的索引访问稍慢。您有数十亿患者吗?