【发布时间】:2019-07-10 08:07:00
【问题描述】:
我有一个主表A,和两个不同的子表(B,C),由表A中的外键引用,我想检查表B或C中是否存在带有外键fk-1的行。
我尝试通过在 B 和 C 上使用存在子句从 A 中选择行,这些行是使用 fk-1 进一步 OR'ed 一起选择的,并找到了结果。
SELECT A.id FROM A where A.id = fk-1 AND
(
EXISTS (select B.id from B where B.fk_1 = fk-1)
OR EXISTS (select C.id from C where C.fk_1 = fk-1)
);
这可以优化还是有更好的方法来做到这一点。
提前致谢。
【问题讨论】:
-
我认为没有更有效(或更简单)的方法。
-
您好,当exists子句中需要添加更多表时,多次使用OR对性能有什么影响?
标签: sql postgresql query-performance