EXPLAIN PLAN 분석
쿼리 실행 계획을 확인하여 성능을 분석하는 방법을 DBMS별로 안내합니다.
Toolbar의 PLAN 버튼을 클릭하면 커서 위치의 SQL 문에 대한 실행 계획을 조회합니다. 결과는 Explain 탭에 트리 형태로 표시됩니다.
실행 계획 트리 읽기
각 노드에는 Operation(연산), Object(대상), Rows(예상 행 수), 상세 설명이 표시됩니다. 노드 유형별로 색상 아이콘이 구분됩니다:

| 색상 | 연산 유형 | 성능 영향 |
|---|---|---|
| Full Scan, Sequential Scan | Full Scan, Sequential Scan | 주의 필요 — 테이블 전체를 스캔합니다. 인덱스 추가를 고려하세요. |
| Index Scan, Index Range Scan | Index Scan, Index Range Scan | 양호 — 인덱스를 활용하고 있습니다. |
| Key Lookup, Const, System | Key Lookup, Const, System | 최적 — 상수 시간 또는 키 기반 접근입니다. |
| Nested Loop, Hash Join, Merge Join | Nested Loop, Hash Join, Merge Join | 조인 연산. 조인 방식에 따라 성능이 달라집니다. |
| Sort, Group, Materialize | Sort, Group, Materialize | 정렬/그룹 연산. 임시 공간을 사용할 수 있습니다. |
MySQL / MariaDB
EXPLAIN 문을 사용하여 실행 계획을 조회합니다.
주요 확인 항목:
- type — 접근 방식 (ALL, index, range, ref, eq_ref, const 등). ALL은 풀 테이블 스캔을 의미합니다.
- key — 사용된 인덱스 이름. NULL이면 인덱스를 사용하지 않은 것입니다.
- rows — 예상 스캔 행 수. 값이 클수록 성능에 주의가 필요합니다.
- Extra — 추가 정보 (Using index, Using filesort, Using temporary 등)
PostgreSQL
EXPLAIN ANALYZE 문을 사용하여 실제 실행 통계를 포함한 실행 계획을 조회합니다.
주요 확인 항목:
- Seq Scan — 순차 스캔. 테이블 전체를 읽습니다.
- Index Scan / Index Only Scan — 인덱스를 사용한 스캔.
- Nested Loop / Hash Join / Merge Join — 조인 방식. 데이터 크기에 따라 최적 방식이 다릅니다.
- cost — 예상 비용(startup cost .. total cost). 상대적인 값으로 비교합니다.
- actual time — 실제 실행 시간 (ANALYZE 사용 시)
EXPLAIN ANALYZE는 쿼리를 실제로 실행합니다. DML 문에 사용할 경우 데이터가 변경될 수 있으므로 주의하세요.
Oracle
EXPLAIN PLAN FOR 문으로 실행 계획을 생성한 뒤 DBMS_XPLAN.DISPLAY로 결과를 조회합니다.
주요 확인 항목:
- TABLE ACCESS FULL — 풀 테이블 스캔
- INDEX RANGE SCAN / INDEX UNIQUE SCAN — 인덱스 스캔
- NESTED LOOPS / HASH JOIN / SORT MERGE JOIN — 조인 방식
- Cost — 옵티마이저가 산정한 예상 비용
- Cardinality — 예상 반환 행 수
SQL Server
SET SHOWPLAN_TEXT ON을 사용하여 텍스트 형태의 실행 계획을 조회합니다.
주요 확인 항목:
- Table Scan / Clustered Index Scan — 전체 스캔
- Index Seek / Clustered Index Seek — 인덱스 탐색
- Nested Loops / Hash Match / Merge Join — 조인 연산
- EstimateRows — 예상 행 수
SQLite / H2
SQLite는 EXPLAIN QUERY PLAN, H2는 EXPLAIN 문을 사용합니다.
SQLite EXPLAIN QUERY PLAN 주요 항목:
- SCAN TABLE — 풀 테이블 스캔
- SEARCH TABLE ... USING INDEX — 인덱스를 사용한 검색
- USING COVERING INDEX — 커버링 인덱스 (테이블 접근 없이 인덱스만으로 결과 반환)
H2는 트리 형태의 실행 계획을 반환하며, 테이블 스캔 방식과 인덱스 사용 여부를 확인할 수 있습니다.
