日期:2014-05-16  浏览次数:20539 次

嵌套循环连接(nested loops join)原理

这三类表连接方式是oracle最基本的连接方式:
哈希连接(hash join) 原理 
排序合并连接(sort merge join)的原理  

嵌套循环连接(nested loops join)

   访问次数:驱动表返回几条,被驱动表访问多少次。

   驱动表是否有顺序:有。

   是否要排序:否。

   应用场景:  1.关联中有一个表比较小;

                            2.被关联表的关联字段上有索引;

                            3.索引的键值不应该重复率很高。

如果你做过开发,就把它看成两层嵌套的for循环。

下面我们来做个实验:

SQL> create table test1 as select * from dba_objects where rownum <=100;

SQL> create table test2 as select * from dba_objects where rownum <=1000;
SQL> exec dbms_stats.gather_table_stats(user,'test1');

SQL> exec dbms_stats.gather_table_stats(user,'test2');

SQL> alter session set statistics_level=all;

SQL> select /*+leading(t1) use_nl(t2)*/count(*)
  2    from test1 t1, test2 t2
  3   where t1.objec