반응형
1. Oracle 힌트(Hint)란?
Oracle 힌트는 SQL 문에 대한 실행 계획을 옵티마이저에게 직접 지시하는 기능입니다. 이를 통해 특정 인덱스를 강제로 사용하게 하거나, 조인 방식 등을 지정할 수 있습니다.
힌트는 /*+ HINT_NAME */ 형식으로 작성되며, 일반적으로 SELECT, INSERT, UPDATE, DELETE 문과 함께 사용됩니다.
2. 인덱스 관련 Oracle 힌트 종류
Oracle에서는 특정 인덱스를 사용하도록 유도하는 다양한 힌트를 제공합니다. 아래는 대표적인 힌트 목록입니다.
2.1 INDEX 힌트
특정 인덱스를 사용하도록 강제하는 힌트입니다.
사용법:
SELECT /*+ INDEX(emp emp_idx) */ * FROM emp WHERE deptno = 10;
설명:
- emp 테이블의 emp_idx 인덱스를 강제로 사용하도록 옵티마이저에게 지시합니다.
2.2 INDEX_ASC 힌트
오름차순 인덱스 스캔을 강제합니다.
사용법:
SELECT /*+ INDEX_ASC(emp emp_idx) */ * FROM emp WHERE deptno = 10;
설명:
- emp_idx 인덱스를 오름차순으로 탐색하도록 지정합니다.
2.3 INDEX_DESC 힌트
내림차순 인덱스 스캔을 강제합니다.
사용법:
SELECT /*+ INDEX_DESC(emp emp_idx) */ * FROM emp WHERE deptno = 10;
설명:
- emp_idx 인덱스를 내림차순으로 탐색하도록 지정합니다.
2.4 INDEX_FFS 힌트 (Fast Full Scan)
인덱스 전체를 빠르게 읽는 Fast Full Scan을 수행하도록 지정합니다.
사용법:
SELECT /*+ INDEX_FFS(emp emp_idx) */ empno, ename FROM emp;
설명:
- emp_idx 인덱스에서 테이블을 조회하지 않고 인덱스만 읽어서 데이터를 가져옵니다.
2.5 INDEX_COMBINE 힌트 (비트맵 인덱스 조합)
비트맵 인덱스를 여러 개 결합하여 최적화된 실행 계획을 유도합니다.
사용법:
SELECT /*+ INDEX_COMBINE(emp idx_deptno idx_job) */ * FROM emp WHERE deptno = 10 AND job = 'MANAGER';
설명:
- idx_deptno, idx_job 두 개의 비트맵 인덱스를 조합하여 검색을 최적화합니다.
3. 힌트를 활용한 최적화 예제
3.1 B-Tree 인덱스를 활용한 검색 최적화
SELECT /*+ INDEX(emp emp_idx) */ * FROM emp WHERE empno = 1001;
- emp_idx B-Tree 인덱스를 강제로 사용하여 특정 직원(empno)을 빠르게 조회합니다.
3.2 비트맵 인덱스를 활용한 다중 조건 검색
SELECT /*+ INDEX_COMBINE(emp idx_gender idx_region) */ * FROM emp WHERE gender = 'M' AND region = 'NY';
- 중복도가 높은 gender와 region 컬럼을 비트맵 인덱스로 최적화합니다.
3.3 Fast Full Scan을 활용한 성능 개선
SELECT /*+ INDEX_FFS(emp emp_idx) */ empno, ename FROM emp;
- emp_idx 인덱스를 빠르게 스캔하여 테이블 조회 없이 필요한 데이터를 가져옵니다.
Oracle의 힌트를 적절히 사용하면 실행 계획을 최적화하고 인덱스 활용도를 극대화할 수 있습니다. 하지만 불필요한 힌트 남용은 오히려 성능을 저하시킬 수도 있으므로 신중하게 사용해야 합니다.
핵심 정리:
- INDEX(table index_name): 특정 인덱스를 강제로 사용
- INDEX_ASC(table index_name): 오름차순 스캔
- INDEX_DESC(table index_name): 내림차순 스캔
- INDEX_FFS(table index_name): Fast Full Scan 적용
- INDEX_COMBINE(table index_name1, index_name2): 비트맵 인덱스를 조합하여 검색
자주 사용하는 오라클 힌트 정리 ↓
오라클 힌트(Oracle Hint) 정리 – 자주 사용하는 힌트와 최적화 전략
오라클 데이터베이스에서 SQL 실행 계획을 제어하는 방법 중 하나가 바로 힌트(Hint)입니다. 옵티마이저(Optimizer)는 자동으로 최적의 실행 계획을 선택하지만, 때때로 예상과 다른 실행 계획이 선
biesil.tistory.com
반응형
'Programming > DB' 카테고리의 다른 글
RDB에서 페이징 쿼리의 중요성과 LIMIT, OFFSET 방식의 장단점 (0) | 2025.04.13 |
---|---|
오라클 힌트(Oracle Hint) 정리 – 자주 사용하는 힌트와 최적화 전략 (1) | 2025.04.08 |
오라클 인덱스 구조와 동작 방식 정리 (Oracle Index) (0) | 2025.04.07 |
ORACLE ORA-01427: 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다 오류 해결 방법 (0) | 2025.04.07 |
ORACLE ORA-01555: Snapshot Too Old 오류 해결 방법 (0) | 2025.04.05 |