MySQL 옵티마이저 - dnwls16071/Backend_Study_TIL GitHub Wiki

📚 MySQL 엔진과 스토리지 엔진 처리 영역

image

(1). SQL 파서가 주어진 SQL문을 잘게 쪼개 MySQL 서버가 이해할 수 있는 수준으로 분리한다. (2). SQL 옵티마이저가 파스 트리를 확인하며 쿼리 최적화 및 실행계획을 수립한다. (3). 결정된 정보를 통해 스토리지 엔진에서 필요한 데이터를 가져온다.

📚 실행 계획 분석

[실행계획 컬럼 type: const]

  • 일치하는 행이 하나
  • 조건절에 PK / Unique 컬럼 이용
  • 매우 빠르다.

[실행계획 컬럼 type: ref]

  • PK / Unique 아닌 컬럼의 인덱스
  • 동등(equal) 조건으로 검색할 때

[실행계획 컬럼 type: range]

  • 인덱스 레인지 스캔
  • 인덱스를 활용해 범위 형태의 데이터를 조회한 경우
  • 범위 형태 : 부등호, IS NULL, BETWEEN, IN, LIKE 등

[실행계획 컬럼 type: index]

  • 인덱스 테이블 풀 스캔
  • 인덱스에 포함된 컬럼만으로 처리할 수 있는 쿼리인 경우(=커버링 인덱스)
  • 인덱스를 사용하여 테이블 전체를 스캔하는 경우

[실행계획 컬럼 type: all]

  • 테이블 풀 스캔
  • 성능이 좋지 않음(=전체를 전부 뒤지기 때문에)
  • 인덱스 추가를 통해 피할 수 있음(단, 인덱스를 무식하게 많이 거는 것이 능사가 아니라는 점을 인지할 것)