성능이 확 달라집니다: 오라클 SQL 힌트 실무 적용 가이드
성능이 확 달라집니다: 오라클 SQL 힌트 실무 적용 가이드
오라클에서 SQL 성능을 조절하고 싶을 때 가장 직접적으로 개입할 수 있는 방법이 힌트(HINT) 입니다.
이번 글에서는 실무에서 자주 쓰는 힌트 종류와 사용법을 예제와 함께 정리해볼게요.
✅ 힌트란?
오라클 옵티마이저는 SQL을 자동으로 최적화하지만,
때로는 개발자가 직접 개입해서 더 나은 실행 계획을 유도할 수 있습니다.
이때 사용하는 것이 바로 힌트(HINT)입니다.
힌트는 주석처럼 보이지만 실제로는 옵티마이저에게 명령을 전달하는 강력한 도구입니다.
✅ 힌트 기본 문법
SELECT /*+ 힌트명 */ 컬럼명 FROM 테이블명;
예시:
SELECT /*+ INDEX(emp emp_name_idx) */ name
FROM emp
WHERE name = 'John';
✅ 실무에서 자주 쓰는 힌트 정리
FULL(table)
→ 테이블을 무조건 Full Scan 하도록 강제
→SELECT /*+ FULL(emp) */ * FROM emp
INDEX(table index_name)
→ 특정 인덱스를 사용하도록 강제
→SELECT /*+ INDEX(emp emp_name_idx) */ name FROM emp WHERE name = 'John'
NO_INDEX(table index_name)
→ 특정 인덱스를 사용하지 않도록 강제USE_NL(table)
→ Nested Loop Join을 사용하도록 유도
→SELECT /*+ USE_NL(emp dept) */ ...
LEADING(table)
→ 조인 순서를 지정
→SELECT /*+ LEADING(emp dept) */ ...
PARALLEL(table, degree)
→ 병렬 처리 적용 (주의: 서버 자원 고려)
🧠 실무 팁
- 힌트는 남용하면 역효과가 날 수 있습니다.
- 옵티마이저가 힌트를 무시할 수도 있기 때문에, 실행 계획을 꼭 확인하세요.
- 힌트는 임시 조치 또는 특정 상황에서 성능을 개선할 때 전략적으로 사용해야 합니다.
📌 마무리
힌트는 고성능 SQL을 작성할 수 있는 강력한 도구입니다.
하지만 제대로 이해하지 않고 사용할 경우 성능 저하를 부를 수도 있습니다.
항상 EXPLAIN PLAN
또는 AUTOTRACE
등을 통해 실행 계획을 확인하세요!
#오라클 #SQL힌트 #쿼리성능 #쿼리튜닝 #오라클실무
#FULLSCAN #INDEX힌트 #실행계획 #오라클튜닝 #개발자블로그 #티스토리블로그
오라클, SQL힌트, 오라클힌트, 쿼리성능, SQL튜닝, 쿼리튜닝, FULLSCAN, INDEX힌트, 실행계획, 오라클튜닝, 힌트적용, 옵티마이저, 오라클실무, 개발자블로그, 티스토리블로그
성능이 확 달라집니다: 오라클 SQL 힌트 실무 적용 가이드
오라클에서 SQL 성능을 조절하고 싶을 때 가장 직접적으로 개입할 수 있는 방법이 힌트(HINT) 입니다.
이번 글에서는 실무에서 자주 쓰는 힌트 종류와 사용법을 예제와 함께 정리해볼게요.
✅ 힌트란?
오라클 옵티마이저는 SQL을 자동으로 최적화하지만,
때로는 개발자가 직접 개입해서 더 나은 실행 계획을 유도할 수 있습니다.
이때 사용하는 것이 바로 힌트(HINT)입니다.
힌트는 주석처럼 보이지만 실제로는 옵티마이저에게 명령을 전달하는 강력한 도구입니다.
✅ 힌트 기본 문법
SELECT /*+ 힌트명 */ 컬럼명 FROM 테이블명;
예시:
SELECT /*+ INDEX(emp emp_name_idx) */ name
FROM emp
WHERE name = 'John';
✅ 실무에서 자주 쓰는 힌트 정리
FULL(table)
→ 테이블을 무조건 Full Scan 하도록 강제
→SELECT /*+ FULL(emp) */ * FROM emp
INDEX(table index_name)
→ 특정 인덱스를 사용하도록 강제
→SELECT /*+ INDEX(emp emp_name_idx) */ name FROM emp WHERE name = 'John'
NO_INDEX(table index_name)
→ 특정 인덱스를 사용하지 않도록 강제USE_NL(table)
→ Nested Loop Join을 사용하도록 유도
→SELECT /*+ USE_NL(emp dept) */ ...
LEADING(table)
→ 조인 순서를 지정
→SELECT /*+ LEADING(emp dept) */ ...
PARALLEL(table, degree)
→ 병렬 처리 적용 (주의: 서버 자원 고려)
🧠 실무 팁
- 힌트는 남용하면 역효과가 날 수 있습니다.
- 옵티마이저가 힌트를 무시할 수도 있기 때문에, 실행 계획을 꼭 확인하세요.
- 힌트는 임시 조치 또는 특정 상황에서 성능을 개선할 때 전략적으로 사용해야 합니다.
📌 마무리
힌트는 고성능 SQL을 작성할 수 있는 강력한 도구입니다.
하지만 제대로 이해하지 않고 사용할 경우 성능 저하를 부를 수도 있습니다.
항상 EXPLAIN PLAN
또는 AUTOTRACE
등을 통해 실행 계획을 확인하세요!
#오라클 #SQL힌트 #쿼리성능 #쿼리튜닝 #오라클실무
#FULLSCAN #INDEX힌트 #실행계획 #오라클튜닝 #개발자블로그 #티스토리블로그
'오라클 실무 쿼리 튜닝' 카테고리의 다른 글
인라인 뷰 vs 테이블 조인 – 같은 결과, 다른 처리 방식 (0) | 2025.04.14 |
---|---|
INDEX RANGE SCAN과 FULL SCAN, 언제 어떤 게 빠를까? (0) | 2025.04.09 |
인덱스가 성능을 좌우한다? 속도 차이가 극명하게 나는 상황 3가지 (0) | 2025.04.08 |
오라클 쿼리 성능을 떨어뜨리는 흔한 실수: WHERE절에서 함수 사용 (0) | 2025.04.08 |
오라클 인덱스 스캔 방식 정리 - FULL SCAN, RANGE SCAN, UNIQUE SCAN 차이점 (0) | 2025.04.08 |