oracle - 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)
解决方案
纯粹从功能上来说,并且不知道表中有什么,第一个似乎更好 - 如果 a1 和 b2 中的数据匹配,您的第二个查询将不会加入它。
推荐阅读
- sql - 选择语句中带有子查询的重复行
- java - 停止和重新启动嵌入式 Tomcat8 失败,端口已在使用中
- dialogflow-es - Dialogflow 可以完全用文本编辑器开发吗?
- c++ - Botan/C++ - 使用大于 32 字节的密钥使用 AES 加密
- reactjs - React hooks 在 useEffect 的清理函数中丢失了状态变量的更新值
- javascript - '完整日历' 仅在周视图中删除事件点
- python - python pip安装程序问题
- vba - 用于重新格式化部分标题的宏
- python-3.x - Django many to many 真的有必要吗?
- pdf - 如何在中使用 ReadAloud