| 열 이름 | 의미 | 주요 옵션 또는 설명 |
|---|---|---|
| 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: 멀티 레인지 리드 최적화 |