1、nested loop(嵌套循环)
对于被连接的数据子集较小的情况,nested loop连接就是较好的选择。nested loop就是扫描一个表,每读到一条记录,就根据索引去另外一个表里面查找,没有索引一般就不会是nested loops。
一般在nested loop中,驱动表满足条件结果集不大,被驱动表的连接字段要有索引,这样就走nested loop。
如果驱动表返回记录太多,就不适合nested loop。如果连接字段没有索引,则适合走hash join,因为不需要索引。
要点如下:
1)对于被连接的数据子集较小的情况,嵌套循环连接是个较好的选择
2)使用USE_NL(table_name1 table_name2)可是强制CBO 执行嵌套循环连接
3)Nested loop一般用在连接的表中有索引,并且索引选择性较好的时候
4)ON、IN的顺序很重要,驱动表的记录集一定要小,返回结果集的响应时间是最快的。
5)Nested loops 工作方式是从一张表中读取数据,访问另一张表(通常是索引)来做匹配,nested loops适用的场合是当一个关联表比较小的时候,效率会更高。
select ename,dname from emp,<