Oracle:Nested Loops, Merge Join, Hash Join

摘自《Troubleshooting Oracle Performance》

Nested Loops

  一个Outer Loop,一个Inner Loop,外部的循环驱动内部的循环

Merge Join

  两边的数据集会先按连接的字段排序,然后再连接

Hash Join

  左边的数据集会用来构建一个哈希表,等哈希表建好之后,再逐条查看右边的数据集,看它们是否可以命中这张哈希表

比较

   Nested Loops可以在产生第一条记录时即开始返回数据,Hash Join有时可以,Merge Join完全不行

   如果目标是尽快返回所有记录

     1.若查询的选择性较高,则Hash Join最佳

     2.否则,则应使用Nested Loops

   

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.