MySQL EXPLAIN 보는 방법

Lunar Dev·2024년 7월 8일

MySQL

목록 보기
3/4
열 이름 의미 주요 옵션 또는 설명
id 쿼리 내의 SELECT 문의 순서 값이 클수록 먼저 실행됨
select_type SELECT 문의 유형 SIMPLE: 단순 SELECT
PRIMARY: 가장 바깥쪽 SELECT
SUBQUERY: 독립적인 서브쿼리
DERIVED: FROM 절의 서브쿼리
UNION: UNION의 두 번째 이후 SELECT
UNION RESULT: UNION의 결과
DEPENDENT SUBQUERY: 외부 쿼리에 의존적인 서브쿼리
DEPENDENT UNION: 외부 쿼리에 의존적인 UNION
table 참조되는 테이블 이름 -
type 조인 타입이며 속도와 아주 밀접한 항목이다
가장 상위에 속한 것이 좋은 순서이고 아래로 갈수록 안좋은 형태이다
system: 하나의 레코드만 존재
const: 하나의 매치되는 행만 존재
eq_ref: 각 테이블에서 하나의 행만 읽힘
ref: 여러 행과 일치하는 경우
fulltext: 풀텍스트 인덱스 사용
ref_or_null: NULL 값 포함 행 찾기
index_merge: 인덱스 병합
range: 인덱스로 범위 내 행 추출
index: 인덱스를 통한 테이블 전체 스캔
ALL: 풀 스캔
possible_keys 이 컬럼값은 MySQL이 해당 테이블의 검색에 사용할 수 있는 인덱스들을 나타낸다
이 값이 NULL이라면 MySQL은 인덱스를 사용하지 않는다
NULL: 사용 가능한 인덱스 없음
key 이 컬럼은 MySQL이 실제 사용한 key(index)를 나타낸다 NULL: 인덱스를 사용하지 않음
key_len 이 컬럼은 MySQL이 사용한 인덱스의 길이를 나타낸다 key 컬럼의 값이 NULL이면 이 컬럼의 값도 NULL이다
이 값으로 MySQL이 실제로 키를 얼마나 사용하였는지 알 수 있다
짧을수록 좋음
ref 이 컬럼은 행을 추출하는데 키와 함께 사용된 컬럼이나 상수값을 나타낸다 -
rows 이 값은 쿼리 수행에서 MySQL이 찾아야하는 데이터행 수의 예상값을 나타낸다 추정 수치이며 항상 정확하지 않다 작을수록 좋음
filtered filtered열에 나타난 조건에 의해 필터링 될 테이블 행의 예상 비율을 나타낸다
즉, rows는 검사 된 행 수를 나타내고 rows x filtered / 100은 이전 테이블과 조인 될 행 수를 표시한다
높을수록 좋음
Extra 이 컬럼에는 MySQL이 쿼리를 어떻게 해석하는지에 대한 추가 정보가 들어있다 Using index: 커버링 인덱스 사용 (좋음)
Using where: WHERE 절로 추가 필터링
Using temporary: 임시 테이블 사용 (주의)
Using filesort: 추가 정렬 작업 (주의)
Using index condition: 인덱스 컨디션 푸시다운
Using MRR: 멀티 레인지 리드 최적화
profile
저장소

0개의 댓글