2013년 12월 29일 일요일

[oracle hint]ACCESS경로변경힌트(INDEX_COMBINE)[재직자무료교육/프로그래머교육/구로디지털IT교육,오라클/자바/닷넷/C#/iOS/안드로이드/아이폰교육]

[oracle hint]ACCESS경로변경힌트(INDEX_COMBINE)[재직자무료교육/프로그래머교육/구로디지털IT교육,오라클/자바/닷넷/C#/iOS/안드로이드/아이폰교육] 


 
이 힌트는 비트맵 인덱스에 대해서만 적용 가능한 힌트 입니다. 예를 들어 EMP 테이블에 대해ename bidx_emp_ename이라는 비트맵 인덱스, deptno bidx_emp_deptno라는 비트맵 인덱스가 생성되어 있다고 할 때 아래와 같이 INDEX_COMBINE이라는 힌트와 테이블 명을 인자로 주게 되면 적절한 비트맵 인덱스를 조합하여 실행 계획을 만들어 내게 됩니다.
 
 
구로디지털 오엔제이프로그래밍실무교육센터
 
 
SELECT
        *
FROM  EMP E
WHERE ename = SMITH
AND   deptno = 10;
 
Execution Plan
-------------------------------------------------------------------
 SELECT STATEMENT Optimizer=CHOOSE 
   TABLE ACCESS (BY INDEX ROWID) OF EMP
   BITMAP CONVERSION (TO ROWIDS)
     BITMAP AND
       BITMAP INDEX (SINGLE VALUE) OF bidx_emp_ename
 BITMAP INDEX (SINGLE VALUE) OF bidx_emp_deptno
 
 
뮬론 힌트 사용시 다음과 같이 테이블명과 비트맵 인덱스 명을 줘도 관계 없습니다.
 
 
또한 INDEX_COMBINE 대신 INDEX 힌트를 이용하여 비트맵 인덱스를 줘도 되지만 비트맵 인덱스라는 경우 알리기 위해 INDEX_COMBINE을 사용하는 것이 좋습니다.
 
[실습]
 
-      실습을 위한 예제 테이블 및 데이터는 아래 링크에서 확인 바랍니다.
 
myemp1 : 1000만건
myemp1_old : 100만건
mydept : 5
 
테스트환경 : oracle 11g
 
 
 
SQL> conn scott/tiger
연결되었습니다.
SQL> set autotrace on explain
SQL> set linesize 120
SQL> set timing on
SQL> create bitmap index bidx_myemp1_deptno on myemp1(deptno);
 
인덱스가 생성되었습니다.
 
SQL> create bitmap index bidx_myemp1_sal on myemp1(sal);
 
인덱스가 생성되었습니다.
 
SQL> SELECT
  2          count(ename)
  3  FROM  MYEMP1 E
  4  WHERE deptno =  1
  5  AND   sal > 800000;
 
COUNT(ENAME)
------------
     1200000
 
   : 00:00:08.84
 
 
-----------------------------------------------------------------------------
| Id  | Operation          | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |        |     1 |    20 | 16990   (1)| 00:03:24 |
|   1 |  SORT AGGREGATE    |        |     1 |    20 |            |          |
|*  2 |   TABLE ACCESS FULL| MYEMP1 |  1200K|    22M| 16990   (1)| 00:03:24 |
-----------------------------------------------------------------------------
 
SQL> 
SELECT
            count(ename)
    FROM  MYEMP1 E
    WHERE deptno =  1
    AND   sal > 800000
    ;
 
COUNT(ENAME)
------------
     1200000
 
   : 00:00:10.74
-------------------------------------------------------------------------------------------------
| Id  | Operation                     | Name               | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT              |                    |     1 |    20 |   124K  (1)| 00:24:59 |
|   1 |  SORT AGGREGATE               |                    |     1 |    20 |            |          |
|   2 |   TABLE ACCESS BY INDEX ROWID | MYEMP1             |  1200K|    22M|   124K  (1)| 00:24:59 |
|   3 |    BITMAP CONVERSION TO ROWIDS|                    |       |       |            |          |
|   4 |     BITMAP AND                |                    |       |       |            |          |
|*  5 |      BITMAP INDEX SINGLE VALUE| BIDX_MYEMP1_DEPTNO |       |       |            |          |
|   6 |      BITMAP MERGE             |                    |       |       |            |          |
|*  7 |       BITMAP INDEX RANGE SCAN | BIDX_MYEMP1_SAL    |       |       |            |          |
 
비트맵 인덱스를 사용 안 했을 때 성능이 더 좋다.
 
 
 
 ==================================================================================
[오프라인 개강예정강좌, 오프라인교육장에 오시면 보다 자세히 배울 수 있습니다.]

오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인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/
 

댓글 없음:

댓글 쓰기