본문 바로가기

데이터베이스/MySQL

쿼리 실행 계획

1. 실행 계획 확인 하는 법

 - 쿼리 앞에 explain을 붙여 줌

 

2. 실행 계획 각 항목이 의미하는 내용

 구분

 설명 

 ID

 Select 아이디로 Select를 구분하는 번호

 Select_type

 Select에 대한 타입

 Table

 참조하는 테이블

 Type

 조인 혹은 조회 타입

 Possible_Keys

 데이터를 조회할 때 DB에서 사용할 수 있는 인덱스 리스트

 Key

 실제로 사용할 인덱스

 Key_len

 실제로 사용할 인덱스의 길이

 Ref

 Key 안의 인덱스와 비교하는 칼럼(상수)

 Rows

 쿼리 실행 시 조사하는 행 수

 Extra

 추가 정보

 

3. Select_type

 구분

설명

 SIMPLE

 UNION이나 서브쿼리가 없는 단순 SELECT

 PRIMARY

 서브쿼리가 있을 때 가장 바깥쪽에 있는 SELECT

 DERIVED

 FROM절 안의 서브쿼리

 DEPENDENT SUBQUERY

 외부 쿼리와 상호 연관된 서브쿼리

 

4. Type

 구분

 설명

 system

 테이블에 단 한개의 데이터만 있는 경우

 const

 SELECT에서 Primary Key 혹은 Unque Key를 상수로 조회하는 경우(최소 0건, 최대 1건)

 eq_ref

 조인을 할 때 Primary Key 혹은 Unique Key로 매칭 하는 경우

 ref

 조인을 할 때 Primary Key 혹은 Unique Key가 아닌 Key로 매칭하는 경우

 ref_or_null

 ref와 같지만 NULL이 추가되어 검색되는 경우

 index_merge

 두 개의 인덱스가 병합되어 검색이 이루어지는 경우

 unique_subquery

 IN절 안의 서브쿼리에서 Primary Key가 오는 경우

 index_subquery

 IN절 안의 서브쿼리에서 Primary Key가 아닌 Key가 오는 경우 

 range

 특정 범위 내에서 인덱스를 사용하여 원하는 데이터를 추출하는 경우

 index

 인덱스 풀스캔

 all

 테이블 풀스캔

 

5.  Extra

 구분

 설명

 Using Index

 커버링 인덱스. 인덱스 자료구조를 이용해서 데이터를 추출

 Using Where

 Where 조건으로 데이터를 추출. Type이 All 혹은 Index 타입과 함께 표현되면 성능이 좋지 않다는 의미임

 Using Filesort

 데이터 정렬이 필요한 경우. 결과 데이터가 많은 경우 성능에 직접적인 영향을 미침

 Using Temporary

 쿼리 처리 시 내부적으로 Temporary Table이 사용되는 경우를 의미

 

 

'데이터베이스 > MySQL' 카테고리의 다른 글

MySQL 특징  (0) 2016.06.01