'index'에 해당되는 글 1건

[Oracle]Oracle INDEX

DB 2012. 11. 14. 14:56
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

[Oracle]

※ CREATE [UNIQUE] INDEX [인덱스명] ON [테이블명]([컬럼명], [컬럼명], ...);

여기서 [UNIQUE]는 생략할 수 있고, PK일 경우 [UNIQUE]를 사용

ex) CREATE INDEX INDEX_TEST ON INDEX_TABLE(DATE_FLD, DATE_FLD1) ;

 

컬럼을 가공하여 INDEX를 생성할수 있음

ex) CREATE INDEX INDEX_TEST ON INDEX_TABLE(TO_DATE(DATE_FLD, 'yyyymmdd'), DATE_FLD1); 

 

DROP INDEX 인덱스명

ex) DROP INDEX INDEX_TEST;

 

INDEX 확인

ex)
    SELECT *
    FROM USER_OBJECTS
    WHERE OBJECT_TYPE='INDEX'
    AND OBJECT_NAME='INDEX_TEST';

 

※ 힌트 강제 INDEX

ex)

INDEX() : INDEX를 순차적으로 SCAN

INDEX_DESC() : INDEX를 역순으로 SCAN

검색할 테이블에 얼라이언스가 있을 경우 괄호에 얼라이언스를 넣어준다.

/*+ INDEX_DESC(TB_SQMSSTBW_201409 IX_SQMSSTBW_201409_N2)*/

 

[주의사항]

※ INDEX CREATE시나 REBUILD시 테이블에 LOCK이 발생 할 수 있으며, 서비스일 경우 장애가 날 수 있다

※ INSERT, UPDATE, DELETE 시 속도가 저하된다

※ 조회결과가 전체 데이터수의 3~5% 미만일 경우 INDEX SCAN이 효율적이고, 3~5% 이상일 경우는 FULL SCAN이 효율적이다

※ INDEX 컬럼을 다수 설정하였다면 조회조건으로 모두 사용해야 INDEX를 탈 확률이 높아진다

※ INDEX 컬럼을 가공하여 조회조건으로 실행하면 INDEX를 타지 않는다(미리가공)

※ 조회조건에 부정문(<>, NOT), Function이 있을 경우 INDEX를 타지 않는다

 

'DB' 카테고리의 다른 글

[Oracle]피벗(Pivot)과 언피벗(UnPivot)  (0) 2014.09.25
[Oracle]Oracle 언어 확인 및 설정  (0) 2014.06.09
[Oracle]NVL, NVL2, NULLIF  (0) 2014.01.20
[MySQL]Oracle SQL, MySQL 변환  (0) 2012.11.13
[Oracle]Oracle Instant 설정  (0) 2012.10.31
블로그 이미지

겐타쓰

,