[Oracle Hint강의]join hint 조인 방법 변경(USE_MERGE)
머지 조인(Merge Join)이 일어나도록 유도하는 힌트 구문으로 이 경우 거의 SORT를 동반하므로 SORT MERGE JOIN이라고 부릅니다. 머지 조인이란 양쪽 테이블에서 대상 로우를 추출 후 조인 컬럼을 기준으로 SORT를 한 후 최종 결과를 만들어 내는 조인 방식 입니다.
USE_NL처럼 FROM 절 다음에 위치하는 테이블의 순서는 중요하지 않은데 그 이유는 어차피 독립적으로 정렬된 후 병합이 일어나므로 중요하지 않다고 할 수 있으며 SORT MERGE JOIN에서는 드라이빙 테이블의 의미가 없습니다.
[형식]
[예]
아래 예제는 Oracle 10g에서 돌렸습니다.
select
e.empno,
e.ename,
d.dname,
d.loc
from dept d, emp e
where e.deptno = d.deptno
---------------------------------------------------------------
Operation Object Name Rows Bytes Cost
-------------------------------------------------------------
SELECT STATEMENT Optimizer Mode=ALL_ROWS 14 5
MERGE JOIN 14 406 5
TABLE ACCESS BY INDEX ROWID SCOTT.DEPT 4 72 2
INDEX FULL SCAN SCOTT.PK_DEPT 4 1
SORT JOIN 14 154 3
TABLE ACCESS BY INDEX ROWID SCOTT.EMP 14 154 2
INDEX FULL SCAN SCOTT.IDX_EMP_DEPTNO 13 1
select
e.empno,
e.ename,
d.dname,
d.loc
from dept d, emp e
where e.deptno = d.deptno
---------------------------------------------------------------------
Operation Object Name Rows Bytes Cost
------------------------------------------------------------------
SELECT STATEMENT Optimizer Mode=ALL_ROWS 14 5
MERGE JOIN 14 406 5
TABLE ACCESS BY INDEX ROWID SCOTT.DEPT 4 72 2
INDEX FULL SCAN SCOTT.PK_DEPT 4 1 SORT JOIN 14 154 3
TABLE ACCESS BY INDEX ROWID SCOTT.EMP 14 154 2
INDEX FULL SCAN SCOTT.IDX_EMP_DEPTNO 13 1
[실습]
- 실습을 위한 예제 테이블 및 데이터는 아래 링크에서 확인 바랍니다.
myemp1 : 1000만건
myemp1_old : 100만건
mydept : 5건
테스트환경 : oracle 11g
MYEMP1이 비드라이빙 테이블이지만 머지조인 에서는 별 의미 없다.
SQL> select
2 e.ename,
3 d.dname
4 from mydept1 d, myemp1 e
5 where e.deptno = d.deptno ;
20000000 개의 행이 선택되었습니다.
경 과: 00:02:22.62
---------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
---------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 20M| 476M| | 68516 (2)| 00:13:43 |
| 1 | MERGE JOIN | | 20M| 476M| | 68516 (2)| 00:13:43 |
| 2 | SORT JOIN | | 10 | 100 | | 4 (25)| 00:00:01 |
| 3 | TABLE ACCESS FULL| MYDEPT1 | 10 | 100 | | 3 (0)| 00:00:01 |
|* 4 | SORT JOIN | | 10M| 143M| 459M| 68463 (1)| 00:13:42 |
| 5 | TABLE ACCESS FULL| MYEMP1 | 10M| 143M| | 16941 (1)| 00:03:24 |
SQL> select
2 e.ename,
3 d.dname
4 from myemp1 e, mydept1 d
5 where e.deptno = d.deptno ;
20000000 개의 행이 선택되었습니다.
경 과: 00:02:09.58
---------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
---------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 20M| 476M| | 68516 (2)| 00:13:43 |
| 1 | MERGE JOIN | | 20M| 476M| | 68516 (2)| 00:13:43 |
| 2 | SORT JOIN | | 10M| 143M| 459M| 68463 (1)| 00:13:42 |
| 3 | TABLE ACCESS FULL| MYEMP1 | 10M| 143M| | 16941 (1)| 00:03:24 |
|* 4 | SORT JOIN | | 10 | 100 | | 4 (25)| 00:00:01 |
| 5 | TABLE ACCESS FULL| MYDEPT1 | 10 | 100 | | 3 (0)| 00:00:01 |
---------------------------------------------------------------------------------------
================================================================================
[오프라인 개강예정강좌, 오프라인교육장에 오시면 보다 자세히 배울 수 있습니다.]
오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(www.onjprogramming.co.kr)
[주간]
[01/06][기업100%환급]Spring ,MyBatis,Hibernate실무과정
[01/06][기업100%환급]SQL기초에서 Schema Object까지
[01/06]C#,ASP.NET마스터
[01/13]iPhone 하이브리드 앱 개발 실무과정
[01/13][기업100%환급]PL/SQL,ORACLE HINT,TUNING
[01/13][기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
[01/13][기업100%환급]HTML5,JavaScript,Ajax,jQUERY,JSON
[01/16][채용확정]오라클자바실무개발자신입과정
[평일야간]
[01/07]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
[01/07]안드로이드개발자과정
[01/08]C#,ASP.NET마스터
[01/09]iPhone하이브리드앱개발실무과정
[01/09]웹퍼블리싱 마스터
[01/09]Spring3.X, MyBatis, Hibernate실무과정
[01/24]SQL초보에서실전전문가까지
[주말]
[01/04]닷넷실무자를위한WPF개발자과정
[01/04]Spring3.X,MyBatis,Hibernate실무과정
[01/11]C#,ASP.NET마스터
[01/11]JAVA&WEB프레임워크실무과정
[01/11]안드로이드개발자과정
[01/11]SQL초보에서전문가까지
[01/18]웹퍼블리싱 마스터
오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(www.onjprogramming.co.kr)
[주간]
[01/06][기업100%환급]Spring ,MyBatis,Hibernate실무과정
[01/06][기업100%환급]SQL기초에서 Schema Object까지
[01/06]C#,ASP.NET마스터
[01/13]iPhone 하이브리드 앱 개발 실무과정
[01/13][기업100%환급]PL/SQL,ORACLE HINT,TUNING
[01/13][기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
[01/13][기업100%환급]HTML5,JavaScript,Ajax,jQUERY,JSON
[01/16][채용확정]오라클자바실무개발자신입과정
[평일야간]
[01/07]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
[01/07]안드로이드개발자과정
[01/08]C#,ASP.NET마스터
[01/09]iPhone하이브리드앱개발실무과정
[01/09]웹퍼블리싱 마스터
[01/09]Spring3.X, MyBatis, Hibernate실무과정
[01/24]SQL초보에서실전전문가까지
[주말]
[01/04]닷넷실무자를위한WPF개발자과정
[01/04]Spring3.X,MyBatis,Hibernate실무과정
[01/11]C#,ASP.NET마스터
[01/11]JAVA&WEB프레임워크실무과정
[01/11]안드로이드개발자과정
[01/11]SQL초보에서전문가까지
[01/18]웹퍼블리싱 마스터
홈페이지 바로가기 : http://www.oraclejavanew.kr/
댓글 없음:
댓글 쓰기