본문 바로가기

Database

Real MySQL 8.0 - 실행 계획 type 속성

포스팅은 Real MySQL 8.0을 기반으로 작성되었습니다. 이 포스팅은 지속적으로 업데이트될 예정입니다. 실행 계획 type 중 자주 마주하는 것 위주로 작성하겠습니다.

 

목차

1. INDEX

2. ALL

3. REF

4. CONST

 


INDEX

 

실행 계획의 type 이 index임은 인덱스 풀 스캔을 의미한다. 즉 인덱스의 필요한 부분만 읽는 것이 아닙니다. 그렇기 때문에 생각보다 효율적이지 않을 수 있습니다.

 

다만 인덱스는 일반적으로 데이퍼 파일 전체보다 크기가 작으므로 인덱스 풀 스캔은 풀 테이블 스캔보다 빠르게 처리됩니다. 그래도 일반적으로 index를 만드는 이유는 인덱스 풀 스캔을 사용하기 위함은 아니기 때문에 쿼리를 살펴보아야 합니다.

 


ALL

 

풀 테이블 스캔을 의미한다. 체크 조건이 존재한다면 불필요한 레코드를 제거하고 반환합니다.

 


REF

 

일반적으로 인덱스의 종류와 관계없이 동등(Equal) 조건으로 검색할 때 ref 접근 방법이 사용된다. 이 경우 1건의 레코드만 반환된다는 보장이 없어도 된다. ref는 매우 좋은 접근 방법이므로 인덱스의 분포도가 나쁘지 않다면 성능상 문제를 일으키지 않는 접근 방법이라고 합니다.

 


CONST

 

const 접근 방식은 쿼리가 PK 혹은 unique key 칼럼을 이용하는 WHERE 조건절을 가지고 있어야 합니다. 반드시 1건을 반환하는 쿼리 처리 방식을 의미합니다. 다른 DBMS에서는 유니크 인덱스 스캔이라고 표현합니다.

 

주의할 점은 다중 컬럼으로 구성된 PK, 유니크 키 중에서 인덱스 일부 칼럼만 조건으로 사용할 때는 const를 사용할 수 없습니다.