[SQL 튜닝 실습] SQL 튜닝 준비 3

2021. 8. 9. 21:36MariaDB DBMS/MariaDB 튜닝준비

반응형

실행 계획 수행

 

SQL문으로 요청한 데이터를 어떻게 조회할 것인지에 대한 계획, 즉 경로에 대한 계획이다.

(*) 여기서부터는 GUI인 MYSQL 워크벤치를 사용

 

기본실행계획 수행문 : 아래 아무거나 사용해도 된다.

개인적으로 EXPLAIN 사용

EXPLAIN SQL문;

DESC SQL문;

 

실행계획 수행

 

SQL문 앞에 EXPLAIN 키워드를 입력하고 실행하면 옵티마이저가 만든 실행계획이 출력된다.

use tuning;			
			
show tables;			
			
explain			
select *			
from 사원			
where 사원번호 between 100001 and 200000;

(*) 마리아 DB 버전 10.0.5 이상에서는 UPDATE 및 DELETE 문에서도 실행계획을 확인할 수 있다.

 


기본 실행계획 항목 분석

EXPLAIN 키워드 실행계획 항목

 

id

SQL문 실행순서 표시

조인할 때는 똑같은 ID 표시

explain					
select 사원.사원번호, 					
	   사원.이름, 				
	   사원.성, 				
	   급여.연봉,				
	   (				
		 select max(부서번호)			
		 from 부서사원_매핑 as 매핑 			
                              where 매핑.사원번호 = 사원.사원번호					
	   ) 카운트				
from 사원, 급여					
where 사원.사원번호 = 10001					
and 사원.사원번호 = 급여.사원번호;

1. id가 1인 행이 2개로 테이블끼리 조인

2. id가 2인 행이 실행

 

select_type

SIMPLE

SQL문을 구성하는 SELECT 문의 타입을 출력하는 항목
SELECT문이 단순히 FROM 절에 위치한 것인지 서브쿼리인지
UNION절로 묶인 SELECT 문인지 등의 정보 제공

 

explain		
select * 		
from 사원		
where 사원번호 = 100000;

단순 SELECT SQL문으로 select_type을 보면 SIMPLE (단순) 임을 알 수 있다.

 

explain				
select 사원.사원번호,				
	   사원.이름,			
       사원.성,				
       급여.연봉				
from 사원,				
	 (			
		select 사원번호,		
		        연봉		
		from 급여		
                             where 연봉 > 80000				
	 ) 급여			
where 사원.사원번호 = 급여.사원번호				
and 사원.사원번호 between 10001 and 10010;

단순 SELECT SQL문으로 select_type을 보면 SIMPLE(단순) 임을 알 수 있다.

 

PRIMARY

서브쿼리를 감싸는 외부쿼리이거나,

UNION이 포함된 SQL 문에서 첫 번째로 SELECT 키워드가 작성된 구문에 표시된다.

 

explain				
select 사원.사원번호, 				
	   사원.이름, 			
	   사원.성, 			
	   (			
	     select max(부서번호)			
                   from 부서사원_매핑 as 매핑				
                   where 매핑.사원번호 = 사원.사원번호				
	   ) 카운트			
from 사원				
where 사원.사원번호 = 100001;

스칼라 서브쿼리가 있을 때는 외부 쿼리의 사원 테이블에 먼저 접근한다는 의미로 PRIMARY 가 표시된다.

 

 

 

반응형