postgresql - 分区 Postgres 表

标签 postgresql database-partitioning

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

问题是:如何用列表分区对患者表进行分区?也就是说,对于这张表,我必须与医生表建立直接分区关系,否则我将不得不使用中间表,因为这两个表之间存在多对多关系。

附件是说明性图像。

Database Tables

最佳答案

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

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

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

关于postgresql - 分区 Postgres 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57024325/

相关文章:

sql - 何时对表进行分区的经验法则

sql - 使用带有 MAX() 的 GROUP BY 作为聚合与使用 ROW_NUMBER 进行分区相比,是否存在性能差异?

sql - 通过解除 JSON 数组的嵌套在 PostgreSQL 中进行批量更新

MySQL 分区使用统计

database - 海量 postgres 表的最佳实践

MySql 分区表 - 使用 PK 在日期范围之间进行选择与 date IN (...) 子句相比非常慢

postgresql - 如何查询自指定点(时间戳或事务 ID)以来的 postgres 增量更新?

windows - 编码=ASCII;和编码= UNICODE;不要在 Npgsql 3 连接字符串中工作

postgresql - PostgreSQL 中的短语比较

postgresql - 我可以包装 session 以创建光滑的交易吗?