14 外连接(hash join outer)--优化主题系列
来源:互联网 发布:ubuntu资源监视器 编辑:程序博客网 时间:2024/06/05 09:58
外连接在分页语句中有些特殊情况是无法优化的
left outer join与leftjoin等价
外连接(outerjoin)
外连接有三种,leftouter join,right outer join,full outer join。
左外连接,左表就做驱动表,右外连接,右表就做驱动表--在NL的时候
如果走HASH JOIN没有这个限制
如果SQL是用ORACLE的写法加号的另一边的表做驱动表
下面举个例子(基于SCOTT11gR2)
select ename,sal,job,dname,dept.deptno
from emp right outer join dept on emp.deptno=dept.deptno wheredept.deptno in(10,20,40);
上面的SQL与下面的SQL是等价的,只是SQL写法不同
select ename,sal,job,dname,dept.deptno
from emp,dept where dept.deptno=emp.deptno(+) and dept.deptnoin(10,20,40);
select /*+ use_nl(emp,dept) */ ename,sal,job ,dname,dept.deptno
from emp right outer join dept on emp.deptno=dept.deptno wheredept.deptno in(10,20,40);
dept是驱动表对不对试一试让EMP表做驱动表并且走NL
是不是外连接走NL的时候没办法改变驱动表顺序??
leading ordered都没办法更改驱动表顺序??
有left join的时候如果走NL那么左表就是驱动表 rightjoin的时候右表就是驱动表
假如 A LEFTJOIN B谁是驱动表A返回结果有10W行 B放回结果有100行这个时候咋办??
让它走HASH JOIN试试想让EMP作为驱动表
/*+swap_join_input(emp)*/ 用这个HINT是可以的
这个HINT 还有一个作用就是多个表JOIN的时候能制定哪个表作为驱动表
A JOIN B 其中A表10GB B表100MB你让A作为驱动表走HASH JOIN是不是很慢??
HASH JOIN 会对驱动表在PGA中进行HASH算法 10GB PGA是放不下的
PGA中一个进程最多才2GB另外 SORTMERGE JOIN其实也分驱动表
其实所有的join都要分驱动表 NL也是
如果走NL 谁主动约谁谁就在上面
如果走HASH JOIN可以用swap_join_inputs这个HINT去交换驱动表顺序
假设 A JOIN BJOIN C JOIN D他们都走HASHJOIN现在要C作为驱动表
提问如果SQL当中有外连接+该怎么办??
先看JOIN方式再看驱动表大小
- 14 外连接(hash join outer)--优化主题系列
- 11 哈希连接(HASH JOIN)--优化主题系列
- 外连接(outer join)
- 外连接(OUTER JOIN)
- 12 排序合并连接(SORT MERGE JOIN)--优化主题系列
- 15 半连接(semi-join)--优化主题系列
- 16 反连接(anti-join)--优化主题系列
- 内连接<inner join>,左外连接<left outer join>,右外连接<right outer join>
- 外连接抓取(Outer Join Fetching )
- 外连接(outer join)
- Oracle 外连接(outer join)
- 9 join方法--优化主题系列
- [Oracle] Sql优化系列--Hash join详解
- 区别交叉连接(cross jon) 内连接(inner join) 和外连接(left outer join,right outer join)
- SQL中的交叉连接(CROSS JOIN)、内连接(INNER JOIN)、外连接(OUTER JOIN)
- oracle 内连接(inner join)、外连接(outer join)、全连接(full join)
- 数据库的外连接(OUTER JOIN),内连接(INNER JOIN)和交叉连接(CROSS JOIN)区别
- oracle 内连接(inner join)、外连接(outer join)、全连接(full join)
- 如何将eclipse上的项目快速的转到androidstudio上
- frame 嵌套页面定位元素方法
- CAD工程图纸转jpg格式教程
- 设计模式小记(一)
- 算法竞赛入门经典(第2版)-刘汝佳-第八章例题解题源码(C++语言)(部分)
- 14 外连接(hash join outer)--优化主题系列
- Leetcode [Valid Parentheses]
- Jetty Tomcat
- DBCP与C3P0
- 微信退款结果通知
- tensorboard
- Shell脚本里面 $#, $@的含义
- Azure Linux 虚拟机常见导致无法远程的操作
- C++类中的指针成员和拷贝构造函数