当一次只能进行一个引用时,我正在寻找在一个表中引用多个表的最有效方法。这意味着表 A 和 B 被表 C 引用,但 A 和 B 不能在 C 的一行中引用,并且我在编写查询时选择要查看的表。
我考虑过 4 种方法:
type
和一个列FK
,这样我就可以进行像这样的连接type = 'A' AND a.pk = c.a_fk
(这就是我们现在使用的)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