【问题标题】:In Oracle, what is the difference between a hash join and a sort-merge join?在 Oracle 中,哈希联接和排序合并联接有什么区别?
【发布时间】:2011-05-07 10:48:36
【问题描述】:

在 Oracle 中,我可以使用提示 USE_HASHUSE_MERGE 来指示优化器执行散列连接或排序合并连接。这些类型的连接有何不同?何时/为什么要使用其中一种?

【问题讨论】:

    标签: oracle join


    【解决方案1】:

    Jonathan Lewis 对哈希连接和合并连接的工作原理做了很好的解释:

    为了更好的衡量......

    【讨论】:

      【解决方案2】:

      “何时/为什么我应该使用其中一种”

      通常您不必担心。这就是 Oracle 优化器的用途。

      【讨论】:

      • 我同意一般情况下我不应该担心它。有什么时候我应该担心它吗?
      • @Matthew:就像所有提示一样,它们是优化器无法找到查询的最佳计划时调整条件的策略的一部分(例如,当您对数据了解得更多时) .它们应该谨慎使用,因为它们限制了优化器的选择。
      【解决方案3】:

      use_hash 提示请求针对指定表的哈希联接。哈希连接将左侧表中的行加载到内存中的哈希表中。

      use_merge 提示强制执行排序/合并操作,该操作本质上是进行全表扫描并动态创建传统索引。即,从 A 到 Z。

      由于哈希连接的内存限制,您通常希望仅在较小的左侧表上使用它们

      排序合并连接通常最适用于产生非常大的结果集或不具有连接键索引的表的查询。

      【讨论】:

        猜你喜欢
        • 2021-01-01
        • 2010-11-09
        • 2016-09-05
        • 2016-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-20
        • 2012-09-12
        相关资源
        最近更新 更多