728x90
반응형
SMALL
Explain
MySQL 서버가 어떠한 쿼리를 실행할 것인가, 즉 실행 계획이 무엇인지 알고 싶을 때 사용하는 기본적인 명령어
단순한 SELECT 구문, 옵티마이저는 INDEX 중 KEY 인덱스를 사용하여 데이터에 접근했다. 총 3946건의 행을 가져왔고 INDEX와 WHERE 조건을 사용했다.
- ID
- 쿼리 처리 순서
- 쿼리 처리 순서
- SELECT_TYPE
- SIMPLE : UNION이나 SUB-QUERY가 없는 단순한 SELECT문
- PRIMARY : SUB-QUERY를 사용할 경우 SUB-QUERY의 외부에 있는 첫 번째 QUERY / UNION을 사용할 경우 UNION의 첫 번째 SELECT QUERY
- UNION : UNION QUERY에서 PRIMARY를 제외한 나머지 SELECT문
- DEPENDENT UNION : UNION과 동일하나, 외부 QUERY에 의존적
- UNION RESULT : UNION QUERY의 결과물
- SUBQUERY : SUB-QUERY 또는 SUB-QUERY를 구성하는 여러 QUERY 중 첫 번째 SELECT문
- DEPENDENT SUBQUERY :SUBQUERY와 동일하나, 외곽 QUERY에 의존적
- DERIVED : SELECT로 추출된 테이블 (FROM절에서의 SUB-QUERY 또는 INLINE VIEW)
- TABLE
- Table명 또는 Alias
- Table명 또는 Alias
- TYPE
- 데이터 접근 방식, 테이블에서 어떻게 행 데이터를 가져오는 표시
- ALL, INDEX는 테이블 또는 특정 인덱스가 전체 행에 접근하기 때문에 테이블 크기가 큰 경우 효율이 떨어진다.
- ref_or_null은 NULL이 들어있는 행은 인덱스의 맨 앞에 모아 저장하지만 그 건수가 많으면 MySQL 서버의 작업량이 방대해진다.
- TYPE가 ALL 또는 INDEX인 경우는 그 쿼리로 사용할 수 있는 적절한 인덱스가 없다는 의미일 수도 있다.
- 효율적인 TYPE : CONST, REF, EQ_REF, RANGE
- CONST : 기본키 또는 고유키에 의한 lookup, 조인이 아닌 가장 외부의 테이블에 접근하는 방식
- SYSTEM : 테이블에 1행밖에 없는 경우의 특수한 접근 방식
- ALL : 전체 행 스캔, 테이블의 데이터 전체에 접근하는 방식
- INDEX : 인덱스 스캔, 테이블의 특정 인덱스의 전체 엔드리에 접근하는 방식
- EQ_REF : 조인이 내부 테이블로 접근할 때 기본키 또는 공유키에 의한 lookup이 일어나는 방식, CONST와 비슷하지만 조인의 내부 테이블에 접근하는 부분이 차이점
- REF : 고유키가 아닌 인덱스에 대한 lookup, 여러개의 행에 접근하는 가능성 존재
- REF_OR_NULL : REF와 마찬가지로 인덱스 접근 시 맨 앞에 저장되어 있는 NULL의 엔트리를 검색
- REANGE : 인덱스 특정 범위의 행에 접근
- KEY
- 인덱스 목록 중 실제로 옵티마이저가 선택한 인덱스
- 인덱스 목록 중 실제로 옵티마이저가 선택한 인덱스
- ROWS
- 접근 방식을 사용해 몇 행을 가져왔는지 표시
- 접근 방식을 사용해 몇 행을 가져왔는지 표시
- EXTRA
- 옵티마이저가 동작하는 방식에 관한 내용
728x90
반응형
LIST
'Develope > Database' 카테고리의 다른 글
[DB] Database Index 인덱스 개념 (0) | 2022.08.31 |
---|---|
[JPA Test] JPA 연동 Test (0) | 2022.07.30 |
[Spring-Data-JPA] Auditing - Entity 공통 요소 자동 맵핑하기 (0) | 2022.07.30 |
[DB] Database Partitioning - DB 파티셔닝 개념 (0) | 2021.01.31 |
[MyBatis] RDB MyBatis란? 기본 설정 및 동적 쿼리 (0) | 2020.03.17 |