MySQL Explain 실행계획 사용법 및 분석

Devel/DB_SQL|2022. 3. 10. 00:00
반응형

MySQL Explain

실행 계획

 

-테이블에 저장된 모든 레코드(Row or Tuple)을 참조하지 않아도 되거나, 테이블을 Join할 때 Join되는 테이블들의 모든 조합을 체크해보지 않아도 될 경우 쿼리의 성능은 개선될 수 있다

-어떠한 작업(인덱스를 사용하는지, 테이블의 모든 Row를 참조 하는지 등등)의 조합으로 구성되는 지를 쿼리 실행 계획(Query Execution Plan)

실행 계획을 쿼리를 실행하기 전에 체크

쿼리가 실행될 때, 반드시 100% 쿼리 실행 계획에 따라 실행되지 않는 경우도 있다.

쿼리문 앞에 explain을 붙여서 실행하면 쿼리 실행 계획이 출력

 

explain 
select d.department_id, d.department_name,
		e.last_name, e.first_name, e.salary
from departments d, employees e
where d.department_id = e.department_id
	and e.department_id =80;

실행하고자 하는 쿼리 앞에 explain을 붙여서 실행계획을 확인 할 수 있다.

실행계획 결과->

query cost가 낮으면 낮을 수록 더 좋은 쿼리이다. (상황에 따라 달라질 수 있다. 상대적)

 

쿼리 실행 계획 - 항목별 상세 내용

항목 중 select type, type, ref가 중요!

 

쿼리 실행 계획 - Select type의 종류

쿼리 실행 계획 - Type 

mysql 실행계획을 볼때, type의 중요하게 보는데,

Type은 데이터를 조회할 때 키와 인덱스를 어떻게 활용하는지를 알린다.

쿼리 실행 계획 - Extra

인덱스는 별로도 생성되는데, 컬럼의 데이터를 가지고 인덱스를 만들고, 인덱스를 보면 그 컬럼의 데이터 추출 가능. 굳이 데이터 테이블 모두 조회하지 않아도 된다.

댓글()
loading