代码之家  ›  专栏  ›  技术社区  ›  Matthew

在Oracle中,哈希联接和排序合并联接有什么区别?

  •  3
  • Matthew  · 技术社区  · 15 年前

    在Oracle中,我可以使用提示 USE_HASH USE_MERGE 指示优化器执行哈希联接或排序合并联接。这些类型的联接有什么不同?我应该何时/为什么使用它们?

    3 回复  |  直到 15 年前
        1
  •  5
  •   Craig    15 年前

    乔纳森·刘易斯(Jonathan Lewis)对哈希连接和合并连接的工作原理给出了一个很好的解释:

    为了更好的衡量…

        2
  •  3
  •   Gary Myers    15 年前

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

    一般来说,你不必担心。这就是Oracle优化器的用途。

        3
  •  2
  •   Mike    15 年前

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

    这个 use_merge 提示强制执行排序/合并操作,该操作基本上执行完整的表扫描并动态创建传统索引。即A到Z。

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

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