728x90
EXPLAIN (실행계획)
- DB가 데이터를 찾아가는 과정을 알아보기 쉽게 DB 결과 셋으로 보여주는 것
- 사용방법 : EXPLAN [EXTENDED] SELECT ... FROM ... WHERE ...
EXPLAIN(실행계획) 정보 요약
실행계획 정보 | 설명 |
id | select문에 대한 순차 식별자, id 순서대로 select문이 실행됨 |
select_type | select문의 유형 |
table | 참조되는 테이블을 말함 |
type | 어떤식으로 테이블들을 조인하는지 나타내는 항목, 타입을 분석함으로써 어떤 인덱스가 사용되고 있는지 확인하고, 이를 통해 쿼리를 어떻게 튜닝해야되는지에 대한 insight를 제공함 |
possible_keys | 테이블에서 row를 매핑시키기 위해 사용 가능한 키를 보여줌 |
key | 실제적으로 쿼리 실행에 사용된 key의 목록, possible_keys 목록에 나타나지 않은 인덱스도 포함이 가능함 |
ref | key column에 지정된 인덱스와 비교되는 column 혹은 constants를 보여줌 |
rows | 결과 산출에 있어서 접근되는 record의 숫자, 조인문이나 서브쿼리 최적화에 있어서 중요한 항목 |
extra | 실행계획에 있어 부가정보를 보여줌 |
EXPLAIN(실행계획) 정보 타입 값 요약
select_type
- SIMPLE : 단순 select문
- PRIMARY : sub query 사용시 sub query 외부에 있는 쿼리와 union을 사용할 경우 union의 첫번째 쿼리
- UNION : union 쿼리에서 primary를 제외한 나머지 select
- DEPENDENT_UNION : union과 동일하나 외부쿼리에 의존적임
- UNION_RESULT : union 쿼리의 결과물
- SUBQUERY : sub query 혹은 sub query를 구성하는 첫번째 select문
- DERIVED : select로 추출된 테이블 (from절에서 서브쿼리 또는 inline view)
- UNCACHEABLE SUBQUERY : sub query와 동일하지만 공급되는 모든 값에 대하 subquery를 재처리함, 외부 쿼리에서 공급되는 값이 동이더라도 cahce된 결과를 사용할 수 없음
- UNCACHEABLE UNION : union과 동일하지만 공급되는 모든 값에 대하여 union 쿼리를 재처리
type
- system : 테이블에 단 한개의 데이터만 있는 경우
- const : select에서 primary key 또는 unique key를 조회하는 경우로 많아야 한건 데이터만 있음
- eq_ref : 조인을 할 때 primary_key
- ref : 조인을 할 때 primary key 또는 unique key가 아닌 key로 매칭하는 경우
- ref_or_null : ref와 같지만 null이 추가되어 검색되는 경우
- index_merge : 두 개의 인덱스가 병합되어 검색이 이루어지는 경우
- unique_subquery : in절 안의 서브쿼리에서 primary key가 오는 특수한 경우
- index_subquery : uniquery_subquery와 비슷하나 primary key가 아닌 인덱스인 경우
- range : 특정 범위 내에서 인덱스를 사용하여 원하는 데이터를 추출하는 경우
- index : 인덱슬르 처음부터 끝까지 찾아서 검색하는 경우 (인덱스 풀스캔)
- all : 테이블을 처음부터 끝까지 검색하는 경우 (풀스캔)
extra
- using index : 커버링 인덱스라고 하며 인덱스 자료 구조를 이용하여 데이터 추출
- using where : where 조건으로 데이터 추출
- using filesort : 데이터 정렬이 필요한 경우로 메모리 혹은 디스크상에서의 정렬을 모두 포함, 결과 데이터가 많은 경우 성능 이슈가 생김
- using temporary : 쿼리 처리 시 내부적으로 temporary table이 사용되는 경우를 의미함
'DATABASE' 카테고리의 다른 글
[REDIS] CLI 명령어 정리 (0) | 2022.07.03 |
---|---|
[DB] 쿼리문 함수 정리 (0) | 2021.12.15 |
[DB] CLUSTERING(클러스터링) (0) | 2021.11.13 |
[DB] REPLICATION(리플리케이션) (0) | 2021.11.13 |
[DB] 쿼리 처리 과정 (0) | 2021.06.26 |