首页 > 解决方案 > SQL UNION 优化

问题描述

我有 4 个名为 A1、A2、B1、B2 的表。

为了满足需求,我有两种编写 SQL 查询的方法。第一个是:

(A1 UNION ALL A2) A JOIN (B1 UNION ALL B2) B ON A.id = B.a_id WHERE ...

第二个是:

(A1 JOIN B1 on A1.id = B1.a_id WHERE ...) UNION ALL (A2 JOIN B2 on A2.id = B2.a_id WHERE ... )

我尝试了这两种方法,并意识到它们在某些特定情况下都给出了相同的执行时间和查询计划。但我不确定他们是否会始终提供相同的性能。

所以我的问题是第一个/第二个在性能方面什么时候更好?

在编码方面,我更喜欢第一个,因为我可以创建两个视图,并将它们(A1 UNION ALL A2)视为两个表。(B1 UNION ALL B2)

标签: oracle

解决方案


纯粹从功能上来说,并且不知道表中有什么,第一个似乎更好 - 如果 a1 和 b2 中的数据匹配,您的第二个查询将不会加入它。


推荐阅读