SQL优化03之NESTED LOOP HASH JOIN MERGE JOIN三种关联方式
1.NESTED LOOP对于被驱动表 数据量较小的情况,循环嵌套是个较好的选择适用于:内表关联字段一定要有索引+ 数据集较小(小于10000条记录)可以用ORDERED 提示来改变CBO默认的驱动表,使用USE_NL(table_name1 table_name2)可是强制CBO 执行嵌套循环连接2. HashJoin对于被驱动表较大的情况,哈希关联 是个较好的选择适...
·
1. NESTED LOOP
对于被驱动表 数据量较小的情况,循环嵌套是个较好的选择
适用于:内表关联字段一定要有索引+ 数据集较小(小于10000条记录)
可以用ORDERED 提示来改变CBO默认的驱动表,使用USE_NL(table_name1 table_name2)可是强制CBO 执行嵌套循环连接
2. HashJoin
对于被驱动表较大的情况,哈希关联 是个较好的选择
适用于: 小表足够小,大表一定要有索引
USE_HASH(table_name1 table_name2)提示来强制使用散列连接。如果使用散列连接HASH_AREA_SIZE
初始化参数必须足够的大,如果是9i,Oracle建议使用SQL工作区自动管理,设置WORKAREA_SIZE_POLICY
为AUTO,然后调整PGA_AGGREGATE_TARGET即可
3. SORT MERGE JOIN(一般加索引)
通常情况下,散列连接效率 >> 排序合并效率
适用于:大表没有索引,且数据已排好序
可以使用USE_MERGE(table_name1 table_name2)来强制使用排序合并连接.
更多推荐
已为社区贡献2条内容
所有评论(0)