2014년 5월 26일 월요일

[오라클 조인 힌트]ORDERED, USE_NL, USE_HASH, USE_MERGE 테스트, ORACLE JOIN HINT[오라클개발자교육/오라클/ORACLE강좌/오라클교육잘하는곳/오라클교육추천/ORACLE실무교육/ORACLE/ORACLE교육/ORACLE학원/오라클실무교육] -- MYEMP1 : 200만건 -- MYDEPT1 : 5건 create index idx_myemp1_deptno on myemp1(deptno) -- 7초,HASH_JOIN, MYDEPT1 드라이빙 select count(*) from mydept1 d, myemp1 e where e.deptno = d.deptno -- mydept1 테이블의 deptno에는 인덱스가 현재 없다. -- 그래서 mydept1 테이블이 드라이빙 -- 6.34초 select /*+ rule */ count(*) from mydept1 d, myemp1 e where e.deptno = d.deptno --이번에는 mydept1의 deptno에 인덱스를 만들자. create index idx_mydept1_deptno on mydept1(deptno) -- myemp1, mydept1의 deptno 컬럼모두에 인덱스가 있다. -- 구 테이블 deptno 인덱스있으면 from절에 멀리 있는 테이블이 드라이빙 테이블 -- 15초, myemp1이 드라이빙 테이블 select /*+ rule */ count(*) from mydept1 d, myemp1 e where e.deptno = d.deptno -- 6.3초, mydept1이 드라이빙 테이블 select /*+ ordered use_nl(e) */ count(*) from mydept1 d, myemp1 e where e.deptno = d.deptno -- 15초, myemp1이 드라이빙 테이블 select /*+ ordered use_nl(d) */ count(*) from myemp1 e, mydept1 d where e.deptno = d.deptno -- 6.5초, mydept1 드라이빙 select /*+ ordered use_hash(e) */ count(*) from mydept1 d, myemp1 e where e.deptno = d.deptno -- 17초, myemp1 드라이빙, index fast full scan select /*+ ordered use_hash(d) */ count(*) from myemp1 e, mydept1 d where e.deptno = d.deptno -- 11초, mydept1 드라이빙 select /*+ ordered use_merge(e) */ count(*) from mydept1 d, myemp1 e where e.deptno = d.deptno -- 17초, myemp1 드라이빙, index fast full scan select /*+ ordered use_merge(d) */ count(*) from myemp1 e, mydept1 d where e.deptno = d.deptno [출처] 오라클자바커뮤니티 - http://www.oraclejavacommunity.co.kr/bbs/board.php?bo_table=LecHINT&wr_id=129 오라클자바커뮤니티교육센터, 개발자전문교육, 개인80%환급 www.oraclejavacommunity.com 평일주간(9:30~18:20) 개강 (5/28)[교육전취업확정]Spring,MyBatis,XPlatform실무프로젝트과정 (5/30)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 (5/30)[기업100%환급]SQL기초에서 Schema Object까지 (6/09)[기업100%환급]PL/SQL,ORACLE HINT,TUNING (6/09)[기업100%환급]안드로이드개발자과정 (6/09)[기업100%환급]Spring ,MyBatis,Hibernate실무과정 (6/16)[기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍 평일야간(19:00~21:50) 개강 (5/28)Spring3.X, MyBatis, Hibernate실무과정 (5/28)SQL초보에서실전전문가까지 (5/29)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지 (6/03)안드로이드개발자과정 (6/03)웹퍼블리싱 마스터 (6/10)C#4.0, ADO.NET, Network 프로그래밍 (6/19)C#,ASP.NET마스터 주말(10:00~17:50) 개강 (5/31)Spring3.X, MyBatis, Hibernate실무과정 (5/31)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지 (5/31)SQL초보에서실전전문가까지 (5/31)C#,ASP.NET마스터 (5/31)실무예제로 배워보는 jQuery(개발자/디자이너를위한) (5/31)안드로이드개발자과정 주말저녁(18:30~22:20) 개강 (6/21)JAVA,Network&WEB&Framework (6/21)SQL기초에서실무까지

[오라클 조인 힌트]ORDERED, USE_NL, USE_HASH, USE_MERGE 테스트, ORACLE JOIN HINT[오라클개발자교육/오라클/ORACLE강좌/오라클교육잘하는곳/오라클교육추천/ORACLE실무교육/ORACLE/ORACLE교육/ORACLE학원/오라클실무교육]  

-- MYEMP1 : 200만건 
-- MYDEPT1 : 5건 

create index idx_myemp1_deptno on myemp1(deptno) 

-- 7초,HASH_JOIN, MYDEPT1 드라이빙 
select count(*) from mydept1 d, myemp1 e 
where e.deptno = d.deptno 

-- mydept1 테이블의 deptno에는 인덱스가 현재 없다. 
-- 그래서 mydept1 테이블이 드라이빙 
-- 6.34초 
select /*+ rule */ count(*) from mydept1 d, myemp1 e 
where e.deptno = d.deptno 

--이번에는 mydept1의 deptno에 인덱스를 만들자. 
create index idx_mydept1_deptno on mydept1(deptno) 

-- myemp1, mydept1의 deptno 컬럼모두에 인덱스가 있다. 
-- 구 테이블 deptno 인덱스있으면 from절에 멀리 있는 테이블이 드라이빙 테이블 
-- 15초, myemp1이 드라이빙 테이블 
select /*+ rule */ count(*) from mydept1 d, myemp1 e 
where e.deptno = d.deptno 

-- 6.3초, mydept1이 드라이빙 테이블 
select /*+ ordered use_nl(e) */ count(*) from mydept1 d, myemp1 e 
where e.deptno = d.deptno 

-- 15초, myemp1이 드라이빙 테이블 
select /*+ ordered use_nl(d) */ count(*) from myemp1 e, mydept1 d 
where e.deptno = d.deptno 

-- 6.5초, mydept1 드라이빙 
select /*+ ordered use_hash(e) */ count(*) from mydept1 d, myemp1 e 
where e.deptno = d.deptno 

-- 17초, myemp1 드라이빙, index fast full scan 
select /*+ ordered use_hash(d) */ count(*) from myemp1 e, mydept1 d 
where e.deptno = d.deptno 

-- 11초, mydept1 드라이빙 
select /*+ ordered use_merge(e) */ count(*) from mydept1 d, myemp1 e 
where e.deptno = d.deptno 

-- 17초, myemp1 드라이빙, index fast full scan 
select /*+ ordered use_merge(d) */ count(*) from myemp1 e, mydept1 d 
where e.deptno = d.deptno 

댓글 없음:

댓글 쓰기