Search

EXPLAIN

EXPLAIN 결과 컬럼 설명

1.
id:
설명: 실행 순서에 대한 ID입니다. 이 값은 쿼리 내에서 SELECT 문이 있는 경우 중첩 SELECT 문을 구별하는 데 사용됩니다. 동일한 id 값을 가지는 행은 함께 실행됩니다.
중첩 쿼리: ID가 낮을수록 먼저 실행됩니다. ID가 높을수록 나중에 실행됩니다.
2.
select_type:
설명: SELECT의 유형을 나타냅니다. 쿼리의 구조에 따라 다르게 나타날 수 있습니다.
유형 예시:
SIMPLE: 하위 쿼리가 없는 간단한 SELECT.
PRIMARY: 가장 바깥쪽 SELECT.
SUBQUERY: 서브쿼리 내의 SELECT.
DERIVED: 파생 테이블(서브쿼리에서 유도된 테이블) 내부의 SELECT.
UNION: UNION 문에서의 SELECT.
DEPENDENT UNION: 외부 쿼리에 의존하는 UNION 문.
UNION RESULT: UNION의 결과를 가져오는 SELECT.
3.
table:
설명: 현재 row가 참조하는 테이블의 이름입니다.
파생 테이블: 경우에 따라 임시 이름이 지정될 수 있습니다.
4.
partitions:
설명: 쿼리가 접근하는 파티션입니다.
NULL: 쿼리가 파티션에 관계없이 수행됨을 의미합니다.
5.
type:
설명: 조인의 유형을 나타내며, 쿼리의 성능에 큰 영향을 미칩니다.
유형 예시 (성능 좋은 순서):
system: 시스템 테이블에 대한 조회.
const: 상수 참조, 고유 인덱스를 통해 한 행만 매치.
eq_ref: 기본 키 또는 고유 인덱스 참조.
ref: 인덱스의 비고유 키 참조.
range: 인덱스에서 범위 조회.
index: 인덱스를 사용한 테이블 전체 스캔.
ALL: 테이블 전체 스캔(성능 최악).
6.
possible_keys:
설명: 쿼리에 사용할 수 있는 인덱스 목록입니다.
NULL: 쿼리에 사용 가능한 인덱스가 없음을 의미합니다.
7.
key:
설명: 실제로 사용되는 인덱스입니다.
NULL: 인덱스가 사용되지 않음을 의미합니다.
8.
key_len:
설명: 사용된 인덱스의 키 길이를 나타내며, 바이트 단위입니다. 인덱스 최적화에 유용한 정보입니다.
중요성: 인덱스를 실제로 사용하는지 확인하는 데 유용합니다.
9.
ref:
설명: 인덱스의 컬럼과 비교되는 값이나 컬럼입니다. 조인된 테이블의 컬럼일 수도 있습니다.
10.
rows:
설명: MySQL이 이 테이블에서 조회할 것으로 예상하는 행의 수입니다.
의미: 값이 작을수록 효율적인 쿼리를 의미합니다.
11.
filtered:
설명: 조건을 만족하는 행의 백분율입니다. 100이 모든 행이 필터를 통과하는 것을 의미합니다.
12.
Extra:
설명: 추가적인 정보로, 실행 계획에 대한 중요한 세부사항을 제공합니다.
유형 예시:
Using where: WHERE 조건을 사용하여 필터링함.
Using index: 인덱스에서 데이터를 직접 가져옴(커버링 인덱스).
Using temporary: 임시 테이블이 필요함.
Using filesort: 결과를 정렬해야 함(인덱스를 사용하지 않는 정렬).