2014년 9월 23일 화요일

오라클11g INDEX INVISIBLE TIP[오라클개발자교육/오라클/ORACLE강좌/오라클교육잘하는곳/오라클교육추천/ORACLE실무교육/ORACLE/ORACLE교육/ORACLE학원/오라클실무교육]

QUERY 작업을 할 때 가끔은 인덱스가 없다면 실행계획이 어떻게 될까,고민 하면서 인덱스를 DROP 하고 실행 계획을 본 후 다시 INDEX를 생성하여 실행 계획을 보는 경우 들이 있을 것이다. 적은 량의 데이터라면 문제가 아닐텐데 많은 양의 데이터가 있는 테이블 이라면 조금은 고민 될 것이다. 
이때 사용할 수 있는 것이 Oracle 11g에서 소개된 INVISIBLE INDEX 인데 인덱스를 invisible로 만들어서 옵티마이저에서 명시적으로 사용하지 말라고 지시를 할 수 있다.
 
 
 
[예]
 
conn / as sysdba
 
SQL>@e:\app\a\product\11.2.0\dbhome_1\sqlplus\admin\plustrce.sql
SQL>@e:\app\a\product\11.2.0\dbhome_1\sqlplus\admin\plustrce.sql
SQL>grant plustrace to scott
 
conn scott/tiger
 
SQL>set autotrace on
 
create index idx_emp_sal on emp(sal);
 
set autotrace on
 
select empno, ename from emp
where sal > 500;
 
Execution Plan
----------------------------------------------------------
Id  | Operation                   | Name        | Rows  | Bytes | Cost (%CPU)|
 
|   0 | SELECT STATEMENT            |             |    14 |   196 |     2   (0)|
|   1 |  TABLE ACCESS BY INDEX ROWID| EMP         |    14 |   196 |     2   (0)|
|*  2 |   INDEX RANGE SCAN          | IDX_EMP_SAL |    14 |       |     1   (0)|
 
IDX_EMP_SAL 인덱스를 이용했음을 알 수 있다.
 
이제 인덱스를 invisible 시켜보자.
 
SQL>ALTER INDEX IDX_EMP_SAL INVISIBLE;
 
 
 
SQL>select empno, ename from emp
where sal > 500;
 
Execution Plan
----------------------------------------------------------
Plan hash value: 3956160932
 
--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |    14 |   196 |     3   (0)| 00:00:01 |
|*  1 |  TABLE ACCESS FULL| EMP  |    14 |   196 |     3   (0)| 00:00:01 |
--------------------------------------------------------------------------
 
실행 계획을 보면 IDX_EMP_SAL 인덱스를 사용하지 않았음을 알 수 있다.
 
 
SQL> SELECT INDEX_NAME, INDEX_TYPE, VISIBILITY 
    FROM ALL_INDEXES 
    WHERE INDEX_NAME LIKE '%EMP%';
 
INDEX_NAME                     INDEX_TYPE                  VISIBILITY           
------------------------------ --------------------------- -------------------- 
IDX_EMP_SAL                    NORMAL                      INVISIBLE           
PK_EMP                         NORMAL                      VISIBLE   
 
 
ALL_INDEXES 뷰를 보면 INVISIBLE 상태로 되어 있음을 알 수 있다.
 
다시 인덱스를 보이도록 하려면...
 
SQL>alter index IDX_EMP_SAL visible;
 
SQL> SELECT INDEX_NAME, INDEX_TYPE, VISIBILITY  
    FROM ALL_INDEXES  
    WHERE INDEX_NAME LIKE '%EMP%';
 
INDEX_NAME                     INDEX_TYPE                  VISIBILITY           
------------------------------ --------------------------- -------------------- 
IDX_EMP_SAL                    NORMAL                      VISIBLE             
PK_EMP                         NORMAL                      VISIBLE             
 
2 rows selected.



 기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/웹퍼블리싱… 오라클자바…12-271965
 [채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취…오라클자바…12-111445
53 [평일주간]100%환급6건,안드로이드,자바,C#,스프링3.2,SQL,힌트/… 오라클자바…03-151201
52 [주말주간]C#, ASP.NET마스터 오라클자바…01-311365
51 [평일,기업100%환급]SQL기초에서 Schema Object까지 오라클자바…01-311142
50 [평일야간]HTML5, CSS3,Ajax, jQuery마스터과정 오라클자바…01-311048
49 [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정 오라클자바…01-191362
48 [평일주간,평일야간,주말]안드로이드개발자과정 오라클자바…01-111196
47 [평일야간,주말주간]JAVA,Network&JSP&Spring,MyBatis,Hibernate 오라클자바…01-031697
46 기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/웹퍼블리싱… 오라클자바…12-271965
45 [평일야간,주말]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis… 오라클자바…12-191465
44 웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX,JavaScript) 오라클자바…12-141431
43 [채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취… 오라클자바…12-111445
42 [평일,기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 오라클자바…12-091162
41 [평일야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 오라클자바…12-011367
40 [기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍(평일주간(단기)… 오라클자바…12-011527
39 [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) 오라클자바…12-011025

댓글 없음:

댓글 쓰기