三大表与表联接方式
1.NESTED LOOPS 嵌套循环
2.HASH JOIN 哈希联接
3.SORT MERGE 排序合并联接
1.NESTED LOOPS 嵌套循环
嵌套循环的本质是将外部数据集连接到内部数据集,对于外部数据集中与单表谓词匹配的每一行,数据库将检索内部数据集中满足连接谓词的所有行。
工作原理:
a.优化器确定驱动行源并将其指定为外部循环。
b.优化器将另一行源指定为内部循环。
c.从外部行源获取一行
d.探查内部行源以查找与谓词条件匹配的行
e.重复前面的步骤,直到通过获取请求获得所有行
嵌套循环优先使用场景:
a.查询结果集偏小。
b.数据库以优化器模式设置为联接大型数据集FIRST_ROWS
c.内部循环有有效访问方式(例如存在高效索引)
HINT :
/*+ ORDERED USE_NL(d) */ ----d 为内部循环表-被驱动表
2.HASH JOIN 哈希联接
优化器使用两个数据集中的较小者在内存中的连接键上构建哈希表,并使用确定性哈希函数指定哈希表中存储每一行??的位置。然后,数据库扫描更大的数据集,探测哈希表以查找满足联接条件的行。
工作原理:
数据库对较小的数据集执行完整扫描,然后在PGA和磁盘上构建一个哈希桶阵列。
当PGA哈希区域填满时ÿ