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

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

반응형

PRIMARY

explain			
select 사원1.사원번호,			
	   사원1.이름,		
	   사원1.성		
from 사원 as 사원1			
where 사원1.사원번호 = 100001			
union all			
select 사원2.사원번호,			
	   사원2.이름,		
	   사원2.성		
from 사원 as 사원2			
where 사원2.사원번호 = 100002;

SUBQUERY

 

독립적으로 실행되는 서브쿼리

SELECT절의 스칼라 서브쿼리

WHERE 절의 중첩 서브쿼리일 경우에 해당

explain			
select 			
(			
	select count(*)		
	from 부서사원_매핑 as 매핑		
) as 카운트,			
(			
	select max(연봉)		
	from 급여		
) as 급여;

2번과 3번의 id값의 서브쿼리는 각각 독립적으로 실행된다.

 

 

DERIVED

 

FROM 절에 작성된 서브쿼리로

FROM 절의 별도 임시테이블인 인라인 뷰를 말한다.

explain				
select 사원.사원번호, 				
	   급여.연봉			
from 사원,				
    (				
		select 사원번호,		
		         max(연봉) as 연봉		
		from 급여		
              where 사원번호 between 10001 and 20000				
     ) as 급여				
where 사원.사원번호 = 급여.사원번호;

해당 인라인 뷰는 실행계획을 통해 2번째 id로 실행되고 있다.

 

 

UNION

 

UNION 및 UNION ALL 구문으로 합쳐진 SELECT 문에서

첫번째 SELECT 구문을 제외한 이후의 SELECT 구문에 해당하는 것을 나타내며

이 때 UNION 구문의 첫 번째 SELECT 절은 PRIMARY 유형으로 출력된다.

 

explain 				
select 'M' as 성별, MAX(입사일자) as 입사일자				
from 사원 as 사원1				
where 성별 = 'M'				
UNION ALL				
select 'F' as 성별, MIN(입사일자) as 입사일자				
from 사원 as 사원2				
where 성별 = 'F';

UNION RESULT

 

UNION ALL 이 아닌 UNION 구문으로 SELECT 절을 결합했을 때 출력되며 정렬을 하여 중복제거를 한다.

 

   explain			
   select 사원_통합.*			
   from (			
      select max(입사일자) as 입사일자			
      from 사원 as 사원1			
        where 성별 = 'M'			
        union			
        select min(입사일자) as 입사일자			
        from 사원 as 사원2			
        where 성별 = 'M'			
    ) as 사원_통합;

 

반응형