1.INNER使用 ON 或 WHERE
select EMP.empid,EMP.empname,EMP.deptno,
depart.deptno,depart.loc
from EMP,depart
where EMP.deptno=depart.deptno;
與
select EMP.empid,EMP.empname,EMP.deptno,
depart.deptno,depart.loc
from EMP INNER JOIN depart
ON EMP.deptno=depart.deptno;
這2個效能有差嗎?
---------
2.OUTTER JOIN
select e.empname, e.deptno, d.depname
from emp e, depart d
where e.deptno(+) = d.deptno
and d.deptno = 99;
與
select e.empname, e.deptno, d.depname
from emp e right join depart d
on e.deptno = d.deptno
where d.deptno = 99;
這2個效能有差嗎?
還是 用(+),有何特別用途?
----------
3.使用 INNER JOIN 效能 會比 LEFT JOIN 效能好嗎?
------解决思路----------------------
(+) 是oracle 的写法,并不是标准的sql。
(+)在左边 是右连接,在右边是 左连接。
至于效率问题,看一下执行计划就知道了
------解决思路----------------------
1.INNER使用 ON 或 WHERE
SQL code
?
1
2
3
4
5
6
7
8
9
select EMP.empid,EMP.empname,EMP.deptno,
depart.deptno,depart.loc
from EMP,depart
where EMP.deptno=depart.deptno;
與
select EMP.empid,EMP.empname,EMP.deptno,
depart.deptno,depart.loc
from EMP INNER JOIN depart
ON EMP.deptno=depart.deptno;
這2個效能有差嗎?
---------
2.OUTTER JOIN
SQL code
?
1
2
3
4
5
6
7
8
9
select e.empname, e.deptno, d.depname
from emp e, depart d
where e.deptno(+) = d.deptno
and d.deptno = 99;
與
select e.empname, e.deptno, d.depname
from emp e right join depart d
on e.deptno = d.deptno
where d.deptno = 99;
两种不同的写法,效率应该没有差别,oracle解析时会对sql进行重写, 可以看一下执行计划
3.使用 INNER JOIN 效能 會比 LEFT JOIN 效能好嗎?
inner join 效率会比left join 效率高,应为left join 需要对一个表进行全表扫描,不是绝对,根据实际情况
------解决思路----------------------
1、2、两组写法效能应该是一样的
3、一般情况下inner join 效率会比left join 效率高
------解决思路----------------------
說明計劃應該就是執行計劃了,explain plan.
學習看執行計劃,網上很多資料先看看,主要是各種掃描方式和連接方式以及順序