使用 Postgres table 继承

Use of Postgres table inheritance

既然Postgres也支持分区tables,那child有什么用 table.

假设有 table 个用户有一个列 created_date。我们可以通过两种方式存储数据:

  1. 我们创建了这个用户table的很多childtable,然后在created_date的基础上分发用户的数据(比如说,一个table 每个日期,例如 user_jan01_21).
  2. 我们可以使用分区键 created_date
  3. 创建分区 table

那么这些解决方案有什么区别呢? 基本上,我想知道什么问题 table 继承可以解决分区不能解决的问题。

我还有一个疑惑:如果按照方案1,查询用户table,不带ONLY关键字,会不会扫描所有child table小号?

例如:

SELECT * FROM WHERE where created_date = current_date - 10;

如果 objective 正在分区,如您的示例所示,那么使用 table 继承就没有优势。声明式分区在易用性、性能和可用功能方面要优越得多。

Table 继承有与分区无关的用途。分区不提供的功能是:

  • child table 可以有额外的列

  • 一个table可以继承多个table

使用 table 继承,如果您 select 来自 parent table,您还将获得 child table 的所有结果]s,就像您使用 UNION ALL 组合结果一样。