Explain And Index (with. mysql)
728x90
실행계획 분석하기
ID
SQL 문이 수행되는 순서를 의미합니다. 위의 실행계획을 확인할 경우 첫 번째 행과 두번째 행의 ID 가 같습니다.
SELECT_TYPE
select 문의 유형을 의미합니다.
- SIMPLE: 단순한 SELECT 구문
- PRIMARY: 서브쿼리를 감싸는 외부 쿼리, UNION 이 포함될 경우 첫번째 SELECT 문
- SUBQUERY: 독립적으로 수행되는 서브쿼리 (SELECT, WHERE 절에 추가된 서브쿼리)
- DERIVED: FROM 절에 작성된 서브쿼리
- UNION: UNION, UNION ALL 로 합쳐진 SELECT
- DEPENDENT SUBQUERY : 서브쿼리가 바깥쪽 SELECT쿼리에 정의된 칼럼을 사용
- DEPENDENT UNION : 외부에 정의된 컬럼을 UNION으로 결합된 쿼리에서 사용하는 경우
- MATERIALIZED : IN 절 구문의 서브쿼리를 임시 테이블로 생성한 뒤 조인을 수행
- UNCACHEABLE SUBQUERY : RAND(), UUID() 등 조회마다 결과가 달라지는 경우
type
- system : 테이블에 데이터가 없거나 한 개만 있는 경우
- const : 조회되는 데이터가 단 1건일 때
- eq_ref : 조인이 수행될 때 드리븐 테이블의 데이터에 PK 혹은 고유 인덱스로 단 1건의 데이터를 조회할 때
- ref : eq_ref와 같으나 데이터가 2건 이상일 경우
- index : 인덱스 풀 스캔
- range : 인덱스 레인지 스캔
- all : 테이블 풀 스캔
key
옵티마이저가 실제로 선택한 인덱스
rows
SQL문을 수행하기 위해 접근하는 데이터의 모든 행 수
extra
- Distinct : 중복 제거시
- Using where : WHERE 절로 필터시
- Using temporary : 데이터의 중간결과를 저장하고자 임시 테이블을 생성, 보통 DISTINCT, GROUP BY, ORDER BY 구문이 포함된 경우 임시 테이블을 생성
- Using index : 물리적인 데이터 파일을 읽지 않고 인덱스만 읽어서 처리. 커버링 인덱스라고 함
- Using filesort : 정렬시
더 좋은 방향으로 튜닝하기
select_type
- GOOD (SIMPLE, PRIMARY, DERVIED)
- BAD (DEPENDENT, UNCACHEABLE)
type
- GOOD (system, const, eq_req)
- BAD (index, all)
extra
- GOOD (Using index)
- BAD (Using filesort, Using temporary)
728x90
'SQL > MySql' 카테고리의 다른 글
RealMySql - Select (Index) (2) | 2022.10.03 |
---|---|
Mysql 자료형 (0) | 2021.11.29 |
MySQL - tabel 생성하기 (0) | 2020.10.10 |
댓글
이 글 공유하기
다른 글
-
RealMySql - Select (Index)
RealMySql - Select (Index)
2022.10.03 -
Mysql 자료형
Mysql 자료형
2021.11.29 -
MySQL - tabel 생성하기
MySQL - tabel 생성하기
2020.10.10