index_merge에서 출력되는 메시지 종류

1권 종료

책너두 6기 48일차

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

내용정리

10 실행계획

10.3 실행계획분석

10.3.12 Extra 칼럼

10.3.12.27 Using MRR

MRR(Multi Range Read) 최적화는 여러 개의 키 값을 한 번에 스토리지 엔진으로 전달하고, 스토리지 엔진은 넘겨받은 키 값들을 정렬해서 최소한의 페이지 접근만으로 필요한 레코드를 읽을 수 있게 한다.

10.3.12.28 Using sort_union(…), Using union(…), Using intersect(…)

쿼리가 index_merge 접근 방법으로 실행되는 경우에는 2개 이상의 인덱스가 동시에 사용될 수 있다. 이 때 두 인덱스로부터 읽은 결과를 어떻게 병합했는지 조금 더상세하기 설명하기 위해 3개 중에서 하나의 메시지를 출력한다.

  • Using intersect(…): 각각의 인덱스를 사용할 수 있는 조건이 AND로 연결된 경우 각 처리 결과에서 교집합을 추출
  • Using union(…): 각각의 인덱스를 사용할 수 있는 조건이 OR로 연결된 경우 각 처리 결과에서 합집합을 추출
  • Using sort_union(…): Using_union과 같은 작업을 수행하지만 Using_union으로 처리될 수 없는 경우(OR로 연결된 상대적으로 대량의 range 조건들) 이 방식으로 처리된다.
10.3.12.29 Using temporary

임시 테이블이 생성된 것. 메모리에 생성된 것인지 디스크에 생성된 것인지는 판단할 수 없다.

10.3.12.30 Using where

MySQL 서버는 내부적으로 크게 MySQL 엔진과 스토리지 엔진이라는 두 개의 레이어로 나눠 볼 수 있다. 전자는 후자로부터 받은 레코드를 가공 또는 연산하는 작업을 수행한다. MySQL 엔진 레이어에서 별도의 가공을 해서 필터링(여과) 작업을 처리한 경우에만 표시된다.

10.3.12.31 Zero limit

데이터 값이 아닌 쿼리 결괏값의 메타데이터만 필요한 경우가 있다. 이럴 때 LIMIT 0을 사용하는데, 표시되는 메시지이다.