在Oracle中,我可以使用提示USE_HASH
或USE_MERGE
来指示优化器执行散列连接或排序合并连接。这些类型的连接是如何不同的,何时/为什么我应该使用其中一个?
答案 0 :(得分:5)
Jonathan Lewis发表了关于散列连接和合并连接如何工作的非常好的解释:
并且好的措施......
答案 1 :(得分:3)
“何时/为何我应该使用其中一个”
一般来说,你不应该担心它。这就是Oracle优化器的用途。
答案 2 :(得分:2)
use_hash
提示请求针对指定表的散列连接。散列连接将左侧表中的行加载到内存中的散列表中。
use_merge
提示强制执行排序/合并操作,该操作基本上执行全表扫描并动态创建传统索引。即,A至Z。
由于散列连接的内存限制,您通常只想在较小的左侧表上使用它们
排序合并连接通常最适用于生成非常大的结果集的查询或不具有连接键索引的表。