select_type 칼럼

표시되는 출력의 의미

책너두 6기 39일차

백은빈, 이성욱의 Real MySQL 8.0 1권 p.419 ~ p.428

내용정리

10 실행 계획

10.3 실행 계획 분석

10.3.2 select_type 칼럼

각 단위 SELECT 쿼리가 어떤 타입의 쿼리인지 표시되는 칼럼이다. 다음 값들이 출력된다.

10.3.2.1 SIMPLE

UNION이나 서브쿼리를 사용하지 않은 단순한 SELECT쿼리인 경우 출력

10.3.2.2 PRIMARY

UNION이나 서브쿼리를 가지는 SELECT 쿼리의 실행 계획에서 가장 바깥쪽(Outer)에 있는 단위 쿼리

10.3.2.3 UNION

UNION으로 결합하는 단위 SELECT 쿼리 가운데 첫 번쨰를 제외한 두 번째 이후 단위 SELECT 쿼리

10.3.2.4 DEPENDENT UNION

UNION select_type과 같이 UNION이나 UNION ALL로 집합을 결합하는 쿼리에 표시

10.3.2.5 UNION RESULT

UNION 결과를 담아두는 테이블을 의미

10.3.2.6 SUBQUERY

FROM절 이외에서 사용되는 서브쿼리만을 의미

10.3.2.7 DEPENDENT SUBQUERY

서브쿼리가 바깥쪽(Outer) SELECT쿼리에서 정의된 칼럼을 사용하는 경우 표시

10.3.2.8 DERIVED

단위 SELECT쿼리의 실행 결과로 메모리나 디스크에 임시 테이블을 생성하는 것을 의미

10.3.2.9 DEPENDENT DERIVED

해당 테이블이 래터럴 조인(LATERAL JOIN)으로 사용된 것을 의미한다.

10.3.2.10 UNCACHEABLE SUBQUERY

하나의 쿼리 문장에 서브쿼리가 하나만 있더라도 그 서브쿼리가 한 번만 실행되는 것은 아니다. 조건이 똑같은 서브쿼리가 실행될 때는 다시 실행하지 않고 이전의 실행 결과를 그대로 사용할 수 있게 서브쿼리의 결과를 내부적인 캐시 공간에 담아둔다. 딱 한번만 캐시되는 것이 아니라 외부(Outer) 쿼리의 값 단위로 캐시가 만들어지는 방식으로 처리된다. 이 표시는 이와 같은 캐시 자체가 불가능하다는 의미이다.

10.3.2.11 UNCACHEABLE UNION

위와 비슷하게, 이 두 개 키워드의 속성이 혼합된 select_type을 의미한다.

10.3.2.12 MATERIALIZED

주로 FROM절이나 IN(subquery) 형태의 쿼리에 사용된다. 9.3.1.13절 구체화를 살펴보자.