반응형
Oracle에서 힌트를 사용하는 것은 쿼리 옵티마이저에게 특정한 방식으로 쿼리를 실행하도록 제안하는 방법이다.
힌트는 SQL 쿼리의 실행 계획을 세밀하게 조정할 수 있게 해주며, 쿼리의 성능을 향상시킬 수 있다. 하지만 힌트를 올바르게 사용하지 않으면 오히려 성능을 저하 시킬 수 있으므로 이 글에서는 힌트의 종류와 사용법에 대해 알아보자.
사용 방법
아래 예제처럼 SELECT 키워드 뒤에 /*+ INDEX (TABLE_A IDX_NAME) */ 처럼 주석 형식으로 사용한다. 힌트는 여러가지 지시사항을 공백으로 구분하여 나열할 수 있다.
SELECT /*+ INDEX (TABLE_A IDX_NAME) */
FROM TABLE_A
;
주로 사용되는 Oracle 힌트
조인 힌트
- 'USE_NL (A B)': A와 B 테이블 사이에 네스티드 루프 조인을 사용하라는 지시이다.
- 'USE_HASH (A B)': A와 B 테이블 사이에 해시 조인을 사용하라는 지시이다.
- 'USE_MERGE (A B)': A와 B 테이블 사이에 소트 머지 조인을 사용하라는 지시이다.
액세스 경로 힌트
- 'INDEX (A idx_name)': A 테이블에 대해 idx_name 인덱스를 사용하라는 지시이다.
- 'FULL (A)': A 테이블에 대해 전체 테이블 스캔을 사용하라는 지시이다.
병렬 처리 힌트(병렬로 작업을 수행할 유닛의 수)
- 'PARALLEL (A, 4)': A 테이블의 쿼리를 병렬로 처리하되, 병렬도는 4로 하라는 지시이다.
- 'NOPARALLEL (A)': A 테이블의 쿼리를 병렬로 처리하지 말라는 지시이다.
기타 유용한 힌트
- LEADING (A B): 조인 순서에서 A 테이블을 먼저 처리하라는 지시이다.
- PUSH_PRED (A): 뷰 또는 서브쿼리에서 조인 조건을 가능한 한 바깥쪽으로 밀어내라는 지시이다.
- NO_MERGE(A): 서브쿼리나 뷰에 대한 병합 최적화를 수행하지 말라는 지시이다.
- DRIVING_SITE(A): 분산 조인에서 A 테이블이 위치한 사이트에서 쿼리를 수행하라는 지시이다.
반응형
'Database' 카테고리의 다른 글
[Oracle] Partition By 절을 활용한 데이터 그룹화 및 분석 (0) | 2024.06.23 |
---|---|
날짜 파티션 인덱스 최적화: TRUNC와 형변환을 피하는 방법 (0) | 2024.05.19 |
[Oracle] 조인(Join) 알고리즘 (0) | 2024.05.04 |
서브쿼리의 종류: 인라인 뷰와 스칼라 쿼리의 이해 (0) | 2024.05.04 |
[Oracle] 특정 시간대만 가져오는 SQL 쿼리 (0) | 2023.08.26 |