INDEX
/*+ INDEX (table index [index] [index] ... ) */
- 지정한 테이블의 인덱스 스캔을 실행하도록 유도합니다.
- Domain, B-tree, bitmap, bitmap join 인덱스 등이 사용될 수 있으나, bitmap 인덱스 들의 사용 시, INDEX 힌트보다는
INDEX_COMBINE 힌트 사용이 추천됩니다.
예)
SELECT /*+ INDEX(TB_BUTTON_USE IDX_TB_BUTTON_USE_01) */ *
FROM TB_BUTTON_USE
WHERE USE_DT BETWEEN TO_DATE('','') AND TO_DATE('','')
INDEX_ASC
/*+ INDEX-ASC (table [index] [index] ... ) +/
- 해당 테이블의 인덱스를 순차적 방식으로 스캔한다
예) 인덱스를 오름차순 정렬하여 첫번째 결과만 가져온다
SELECT /*+ INDEX_ASC(UMS_LOG IDX_UMS_LOG_02)*/
DECODE(STATUS, '1', '전송중', '2', '전송완료', '전송실패')
FROM UMS_LOG
WHERE ETC1 = CM.CONTRACTMST_NO AND ETC3 = '2' AND ROWNUM = 1
INDEX_COMBINE
/*+ INDEX_COMBINE (table [index] [index] ... ) +/
- 해당 테이블에 Bitmap 인덱스의 존재 시, Bitmap 인덱스를 통한 액세스를 유도합니다.
- 힌트 내에 인덱스의 이름이 쓰여지지 않을 시, 해당 인덱스의 Boolean 값을 사용하여 최적의 Cost를 산출하여 실행하게
됩니다.
INDEX_DESC
/*+ INDEX_DESC (table [index] [index] ... ) +/
- 지정한 인덱스에 대해 인덱스 스캔을 역순으로 스캔한다.
예) 인덱스를 내림차순 정렬하여 첫번째 결과만 가져온다
SELECT /*+ INDEX_ASC(UMS_LOG IDX_UMS_LOG_02)*/
DECODE(STATUS, '1', '전송중', '2', '전송완료', '전송실패')
FROM UMS_LOG
WHERE ETC1 = CM.CONTRACTMST_NO AND ETC3 = '2' AND ROWNUM = 1
HASH_SJ
- 세미조인(SEMI_JOIN)은 EXISTS를 사용하는 서브쿼리에 인덱스가 없을 경우 사용한다.
인덱스가 있을 경우에 사용할 경우에 성능상에 큰 차이는 없다. 오히려 검색 속도를 저하시킬 우려가 있다.
다만 서브퀘리에 사용하는 테이블에 인덱스가 여러가 있을 경우 특정 인덱스를 hint 로 사용하여
검색 속도를 향상시킬 수 있다.
SELECT *
FROM TB_COMP A
WHERE EXISTS (
SELECT /*+ HASH_SJ INDEX(TB_CONTRACT_MST IDX_TB_CONTRACT_MST_01) */ 'X'
FROM TB_CONTRACT_MST
WHERE A.COMP_NO = COMP_NO
)
'DB(Oracle, Mysql 등)' 카테고리의 다른 글
[오라클] 두 열을 한 열로.. (0) | 2016.02.12 |
---|---|
[오라클] 문자열 길이 LENGTH(), LENGTHB(), VSIZE() (0) | 2016.02.12 |
[오라클] sqlplus set -options (0) | 2016.02.12 |
[오라클] 중복 제거 하고 전체값 가져오기 (0) | 2016.02.12 |
[오라클] 다중 업데이트 (ORACLE UPDATE) - 서브 쿼리, MERGE INTO, UPDATABLE JOIN VIEW 이용방법 (0) | 2016.02.12 |