🌳 19편. 실행계획(EXPLAIN PLAN)으로 튜닝하기
Oracle에서 SQL 성능을 최적화하려면 먼저 쿼리가 어떻게 실행되는지를 이해해야 합니다.
이를 위해 사용하는 도구가 바로 EXPLAIN PLAN
입니다.
이번 글에서는 실행계획을 확인하고 해석하는 방법, 대표적인 성능 병목 지점을 중심으로 설명합니다.
🔍 1. EXPLAIN PLAN이란?
SQL 문을 실행하지 않고 Oracle 옵티마이저가 선택한 실행 경로를 보여주는 기능입니다.
→ 인덱스 사용 여부, 조인 방식, 테이블 접근 순서 등을 분석할 수 있습니다.
🧪 2. EXPLAIN PLAN 사용 방법
-- 실행계획 저장
EXPLAIN PLAN FOR
SELECT * FROM EMP WHERE DEPTNO = 10;
-- 결과 조회
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
→ 실행계획은 PLAN_TABLE이라는 내부 테이블에 저장됨
🔑 3. 실행계획 주요 항목 해석
항목 | 설명 |
---|---|
OPERATION | 수행 작업 (TABLE ACCESS, INDEX SCAN 등) |
OPTIONS | 접근 방식 (FULL, BY INDEX ROWID 등) |
OBJECT_NAME | 대상 테이블 또는 인덱스 이름 |
COST | 예상 비용 (비교용 지표) |
ROWS | 예상 반환 행 수 |
📌 4. 자주 보이는 실행 경로
- TABLE ACCESS FULL: 테이블 전체 스캔 → 인덱스 튜닝 필요
- INDEX RANGE SCAN: 인덱스 범위 조회 → 매우 효율적
- HASH JOIN: 두 테이블 해시 기반 조인 (대용량 처리용)
- NESTED LOOPS: 인덱스 기반 루프 조인 (소량 데이터 적합)
⚙️ 5. AUTOTRACE로 간편 분석
-- SQL*Plus에서 실행
SET AUTOTRACE ON
SELECT * FROM EMP WHERE DEPTNO = 10;
→ 실행 결과 + 실행계획 + 리소스 사용량 자동 출력
🧠 6. 실무 성능 튜닝 포인트
- WHERE절 컬럼에 인덱스 유무 확인
- 인덱스가 있어도 조건절에
함수
가 들어가면 무효 - 조인 순서가 비효율적일 경우 힌트 사용 고려
FULL SCAN
이 과도한 경우 →INDEX HINT
또는 구조 개선
✍️ 인덱스 힌트 예시
SELECT /*+ INDEX(EMP IDX_EMP_DEPTNO) */
* FROM EMP WHERE DEPTNO = 10;
📝 마무리
이번 글에서는 Oracle SQL 성능 개선의 핵심 도구인 EXPLAIN PLAN의 사용법과 해석 전략을 살펴봤습니다.
다음 글에서는 통계정보 수집과 옵티마이저 힌트 사용법을 통해 실행계획 품질을 향상시키는 방법을 소개하겠습니다.
'database > oracle' 카테고리의 다른 글
🧱 21편. PL/SQL 기본 문법과 블록 구조 (0) | 2025.05.07 |
---|---|
🌳 20편. 통계정보 수집과 옵티마이저 힌트 사용법 (0) | 2025.05.07 |
🌳 18편. Connection Pool과 세션 관리 (1) | 2025.05.07 |
🌳 17편. Lock 이해와 Deadlock 방지 전략 (0) | 2025.05.07 |
🌳 16편. 트랜잭션과 격리 수준 완전 정리 (0) | 2025.05.07 |
댓글