gpt4 book ai didi

oracle - SQL 联合优化

转载 作者:行者123 更新时间:2023-12-04 14:59:34 25 4
gpt4 key购买 nike

我有 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 JOIN B1 on A1.id = B1.a_id WHERE ...) UNION ALL (A2 JOIN B2 on A2.id = B2.a_id WHERE ... )

它向 Oracle CBO 优化器提供有关您的表如何相互关联的更多信息。 CBO 可以更准确地计算潜在计划的成本。这都是关于基数、列统计等的。

关于oracle - SQL 联合优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67239853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com