2013년 11월 6일 수요일

[ORACLE힌트간단사례]오라클힌트데이터정렬, order by 사용예

[ORACLE힌트간단사례]오라클힌트데이터정렬, order by 사용예 

myemp1 테입블에는 2천만건 정도의 데이터가 있고 테이블 구조는 다음과 같다. 

SQL> desc myemp1 
 이름                                      널?      유형 
 ----------------------------------------- -------- -------------- 

 EMPNO                                    NOT NULL NUMBER 
 ENAME                                              VARCHAR2(100) 
 DEPTNO                                            NUMBER 
 ADDR                                              VARCHAR2(100) 
 SAL                                                NUMBER 


인덱스는 sal 컬럼에 만들어져 있다. 
인덱스명 : idx_myemp1_sal 


1. sal값만 추출하는 경우인데 sal로 내림차순 정렬(급여가 높은곳에서 낮은순서로) 

-- 18초 
select sal from myemp1 
order by sal desc 

인덱스를 이용하지 못하고 FULL SCAN 

-- 0.02초 
select sal from myemp1 where sal > 0 
order by sal desc 

idx_myemp1_sal 이용 

이번에는 힌트를 사용해 보자. where sal > 0 이 꼭 필요하다. 
없으면 힌트먹지 않음 

-- 0초 
select /*+ index_desc(myemp1 idx_myemp1_sal) */ sal from myemp1 
where sal > 0 


2. ename, sal 값을 추출하는 경우(ename은 인덱스 영역에는 없는 값이다) 

-- 34초 
select ename, sal from myemp1 
order by sal desc 

인덱스를 이용하지 못하고 FULL SCAN 

--34초 
select ename, sal from myemp1 where sal > 0 
order by sal desc 

인덱스를 이용하지 못하고 FULL SCAN 


이번에는 힌트를 사용해 보자. where sal > 0 이 꼭 필요하다. 
없으면 힌트먹지 않음 

-- 0초 
select /*+ index_desc(myemp1 idx_myemp1_sal) */ ename, sal from myemp1 
where sal > 0 

[개강임박강좌, 오프라인교육장에 오시면 보다 자세히 배울 수 있습니다.]

오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(www.onjprogramming.co.kr)

[주간]
  [11/13]SQL초보에서실전전문가까지
  [11/13]안드로이드개발자과정
  [11/18]Spring3.X, MyBatis, Hibernate실무과정
  [11/18]iPhone 하이브리드 앱 개발 실무과정

[평일야간]
  [11/08]C#,ASP.NET마스터
  [11/08]Spring3.X, MyBatis, Hibernate실무과정
  [11/12]iPhone 하이브리드 앱 개발 실무과정
  [11/14]JAVA&WEB프레임워크실무과정

[주말]
  [11/09]JAVA&WEB프레임워크실무과정
  [11/09]웹퍼블리싱 마스터
  [11/16]C#,ASP.NET마스터
  [11/16]PL/SQL,오라클힌트,SQL튜닝,사례연구
  [11/16]ASP.NET4.0 MVC 프로그래밍
  [11/16]Spring3.X, MyBatis, Hibernate실무과정 



댓글 없음:

댓글 쓰기