1. type 어떤 방식으로 찾는가

왼쪽일수록 더 정확하고 적은 행을 읽습니다.

2. rows / filt 얼마나 읽고 얼마나 남는가

읽는 행 수가 작고 필터 손실이 적을수록 유리합니다.

3. Extra 추가 작업이 생겼는가

커버링 인덱스는 이점이고, 정렬·임시는 경고입니다.

예시 한 줄
email 인덱스 조회
EXPLAIN SELECT * FROM users WHERE email = 'test@example.com';
type
key
rows
filt
Extra
ref
idx_email
1
100%
Using index
후보 인덱스 possible_keys = idx_email
실제 선택 key = idx_email
예상 읽기량 rows = 1, filt = 100%
이 줄이 의미하는 것
빠른 판독 포인트
  • type = ref 비유니크 인덱스를 따라 필요한 값 주변만 찾는 접근입니다.
  • rows = 1, filt = 100% 읽을 행이 매우 적고, 읽은 행이 그대로 조건을 만족할 가능성이 큽니다.
  • Extra = Using index 커버링 인덱스로 해결되어 테이블 본문까지 내려가지 않아도 됩니다.
type 성능 축 왼쪽에서 오른쪽으로 갈수록 더 많이 읽습니다
system 테이블 1건
const 상수 1건
eq_ref 조인 1건
ref 비유니크 인덱스
range 범위 검색
index 인덱스 전체
ALL 테이블 전체

`ref`는 양호한 편이고, `index`와 `ALL`은 읽기 범위가 넓어져 비용이 커질 수 있습니다.

Extra 신호 실행 중에 추가로 벌어지는 일을 확인합니다
Using index 커버링 인덱스로 해결되어 테이블 접근이 생략됩니다.
Using where 읽은 뒤에 WHERE 조건으로 추가 필터링합니다.
Using index condition 인덱스 단계에서 조건 일부를 먼저 밀어 넣습니다.
Using temporary 중간 결과를 임시 테이블에 담아 처리합니다.
Using filesort 인덱스로 끝나지 않아 별도 정렬 작업이 추가됩니다.