쿼리 실행 계획 전에 쿼리 실행 절차부터 알아보자
MySQL에서 실행계획은 EXPLAIN 키워드를 사용해 볼 수 있다.
EXPLAIN 키워드를 사용해 실행계획을 조회해보자
쿼리에서 사용된 (임시 테이블)테이블 개수만큼 데이터가 반환된다.
실행 순서는 위에서 아래로 보면 된다. 실행 순서가 빠를수록 먼저 접근한 테이블이며 느릴수록 쿼리 내부 또는 나중에 접근한 테이블이라고 보면 된다.
select_type
table
null, 테이블명, 별칭, 임시테이블(<>) 지칭한다.
partitions
어떤 파티션을 사용했는지에 대한 정보
type
레코드 스캔 방식을 뜻함.
ALL, system, const, index, range, fulltext, index_subquery등등 존재하는데 ALL을 제외한 모든 것은 인덱스를 사용하는 방법
possible_keys
옵티마이저가 최적의 실행계획을 위해 후보로 선정했던 인덱스 목록
key
선택되어 쿼리에 사용된 인덱스
key_len
인덱스의 각 레코드에서 몇바이트까지 사용했는지
ref
참조조건(equal)에 사용된 값
rows
예측했던 레코드 건수(정확한 결과가 아닌 예측값)
filtered
사용자에게 전달되기 전에 필터링을 하는데, 이때 얼마나 효율적으로 실행되는지에 대한 지표
extra
성능 관련된 내용으로 여러개 같이 표시된다.
각 컬럼마다 들어올 수 있는 타입이 다양하게 있지만, 모두 기재하지 않아서 궁금한 부분을 공식문서를 찾아보면 좋을 것같다.
출처
RealMySQL