小编Gui*_*iik的帖子

PostgreSQL 引用多个表最有效的方法

当一次只能进行一个引用时,我正在寻找在一个表中引用多个表的最有效方法。这意味着表 A 和 B 被表 C 引用,但 A 和 B 不能在 C 的一行中引用,并且我在编写查询时选择要查看的表。
我考虑过 4 种方法:

  • 有一个列type和一个列FK,这样我就可以进行像这样的连接type = 'A' AND a.pk = c.a_fk(这就是我们现在使用的)
  • 使用继承:A 和 B 都从“父”表继承序列,并且 C 具有“父”表的外键,但这在 PostgreSQL 中是不可能的
  • 使用与继承相同的原理,但使用另一个表 D。A 和 B 都有对 D 的引用,C 也有对 D 的引用,我可以像这样进行连接FROM c JOIN a ON a.d_fk = c.d_fk
  • 使用按表列我想要一个外键

在我尝试的每个解决方案中,查询规划器对于将返回多少行的判断都是错误的。
这是一个例子:我创建了一个简单的数据库,其中有 3 个表,如下所示:

                            Table "public.a"
 Column |  Type  | Collation | Nullable |            Default            
--------+--------+-----------+----------+-------------------------------
 pk     | bigint |           | not null | …
Run Code Online (Sandbox Code Playgroud)

postgresql performance database-design postgresql-9.6 postgresql-11 postgresql-performance

7
推荐指数
1
解决办法
1万
查看次数