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
)
출처: https://anomiea.tistory.com/3 [나의 일상이다반사]
'IT > Back-End' 카테고리의 다른 글
오라클에서 특정컬럼 소수점 값있는 데이터 찾기(ex0.1, 0.2) (0) | 2020.09.25 |
---|---|
java에서 .bat파일 args를 쿼츠 잡 파라미터로 넘기는 방법 (0) | 2020.02.18 |
Injection of autowired dependencies failed (0) | 2018.12.12 |
자바 null 체크 (0) | 2018.12.12 |
자바 디스크용량, cpu사용량,메모리 사용량 구하기 (0) | 2018.12.12 |
댓글