DB

[MySQL] EXPLAIN 실행 계획 항목 정리

곽코딩루카 2025. 3. 21. 10:17
반응형

EXPLAIN 실행 계획 항목 정리표

항목의미주요 값설명
id 실행 단계 숫자 (1, 2, 3...) JOIN이 포함된 쿼리에서 실행 순서를 나타냄. 작은 숫자가 먼저 실행됨.
select_type 쿼리 유형 SIMPLE, PRIMARY, SUBQUERY, DERIVED, UNION 등 쿼리의 구조(기본, 서브쿼리, 유니온 등)를 나타냄.
table 참조하는 테이블 테이블명 현재 실행 계획에서 사용되는 테이블 이름을 나타냄.
partitions 사용된 파티션 파티션명 또는 NULL 테이블이 파티셔닝되어 있을 경우, 사용된 파티션을 표시함.
type 조회 방식 (성능 중요!) ALL, index, range, ref, eq_ref, const, system 등 테이블을 검색하는 방식. ALL은 풀 테이블 스캔(느림), const는 즉시 검색(빠름)
possible_keys 사용 가능한 인덱스 인덱스명 또는 NULL 해당 쿼리에서 사용할 수 있는 인덱스를 보여줌.
key 실제 사용된 인덱스 인덱스명 또는 NULL MySQL이 실제로 선택한 인덱스를 나타냄. NULL이면 인덱스 미사용.
key_len 사용된 인덱스 길이 (바이트) 숫자 인덱스에서 몇 개의 바이트를 활용했는지 표시. 길이가 클수록 더 많은 정보 사용.
ref 인덱스와 비교된 값 컬럼명 또는 const, NULL 인덱스에서 참조된 컬럼이나 상수를 나타냄. const이면 기본 키 조회.
rows 예상 조회 건수 숫자 MySQL이 예상하는 검색해야 할 행(row)의 수.
filtered 조건을 만족하는 비율 (%) 0 ~ 100 WHERE 조건을 만족하는 행의 비율을 퍼센트(%)로 나타냄.
Extra 추가 실행 정보 "Using index", "Using where", "Using filesort", "Using temporary" 등 최적화 여부, 추가적인 연산 필요 여부 등을 표시.

type (조회 방식) 비교표

type 값의미성능
system 테이블에 1개의 행만 있는 경우 ✅ 가장 빠름
const 기본 키(PK)나 유니크 인덱스로 특정 행 1개 조회 ✅ 빠름
eq_ref 조인에서 PK 또는 유니크 키로 1개 행 검색 ✅ 빠름
ref 인덱스가 걸린 컬럼을 비교(일반 인덱스 사용) 🟡 중간
range BETWEEN, <, >, IN() 범위 검색 (B-Tree 인덱스 활용) 🟢 좋음
index 테이블 전체를 스캔하지만 인덱스 순서대로 조회 🔴 보통
ALL 풀 테이블 스캔 (가장 느림) 🚨 매우 느림

Extra (추가 실행 정보) 비교표

Extra 값의미성능 영향
"Using index" 커버링 인덱스 사용 (테이블 접근 불필요) ✅ 최적화됨
"Using where" WHERE 조건이 있지만, 인덱스가 완전히 최적화되지 않음 🟡 필터링 필요
"Using index condition" 인덱스를 일부 활용하지만 테이블 데이터도 읽어야 함 🟡 조건 검사 필요
"Using filesort" ORDER BY가 인덱스를 사용하지 못해 추가 정렬 필요 🚨 느림
"Using temporary" 임시 테이블을 사용하여 정렬, 그룹화 수행 🚨 느림
"Using join buffer" 조인 버퍼를 사용하여 최적화되지 않은 조인 실행 🚨 비효율적

 

반응형