【问题标题】:Merge join CARTESIAN合并加入笛卡尔
【发布时间】:2011-10-14 07:21:10
【问题描述】:

合并加入笛卡尔总是危险的吗?

我有许多查询,成本从 7 到 40 不等,但执行合并连接笛卡尔。

当我的查询成本较低时,我真的应该为 Merge Join 笛卡尔而烦恼吗?

我真的需要这方面的帮助。

非常感谢任何帮助。

谢谢, 萨维塔

【问题讨论】:

    标签: performance oracle sql-tuning


    【解决方案1】:

    笛卡尔连接通常表明您在某处错过了连接,这很糟糕,因为您的结果不会是您所期望的,并且查询可能会花费比预期更长的时间。

    但是,情况并非总是如此。假设您有两个相对较小的表格,每个表格要过滤为一行。这两个表都将在两个不同的列上连接到一个更大的表,这两个列都在同一个索引中。在这种情况下,优化器可能会决定将两个小的结果集进行笛卡尔连接,因为结果数据集可以更有效地使用较大表上的索引。

    简而言之,如果您在计划中看到笛卡尔联接,您可能应该仔细查看并尝试了解优化器选择该路线的原因。可能是因为您发现了一个尚未导致问题的错误,或者它确实只是最好的计划,但您必须为每个查询分别做出决定,从而使您在路上免于头疼。

    【讨论】:

    • 完整且总结完善的答案!
    猜你喜欢
    • 2015-07-13
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 2021-05-06
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多