티스토리 뷰

공부흔적/데이터베이스

EXPLAIN

주디 𝙹𝚞𝚍𝚢 2022. 2. 2. 23:04

 쿼리를 작성하면서 이 쿼리는 테이블 풀 스캔이 일어나는 쿼리다, 일어나지 않는 쿼리다, 인덱스는 어떻게 사용하는 게 더 좋을 것 같다 등의 말을 들었는데, 도대체 그걸(테이블 풀 스캔이 일어나는지, 아닌지) 어떻게 아는지 궁금했다. 그러다가 EXPLAIN을 알게 되어 정리해본다. 아래의 링크들을 참고하여 작성했다.

8.8.1 Optimizing Queries with EXPLAIN

 

MySQL :: MySQL 8.0 Reference Manual :: 8.8.1 Optimizing Queries with EXPLAIN

8.8.1 Optimizing Queries with EXPLAIN The EXPLAIN statement provides information about how MySQL executes statements: EXPLAIN works with SELECT, DELETE, INSERT, REPLACE, and UPDATE statements. When EXPLAIN is used with an explainable statement, MySQL disp

dev.mysql.com

Real MySQL [6-5] 실행계획 - EXPLAIN EXTENDED, PARTITIONS

 

Real MySQL [6-5] 실행계획 - EXPLAIN EXTENDED, PARTITIONS

본 게시물의 내용과 이미지는 도서 Real MySQL의 내용을 재구성하여 작성되었습니다. 저자, 출판사에 의해 저작권 문제 발생시 게시물이 비공개 될 수 있음을 알립니다. EXPLAIN EXTENDED(Filtered 칼럼)

weicomes.tistory.com

MySQL Explain 실행계획 사용법 및 분석

 

MySQL Explain 실행계획 사용법 및 분석 - Useful Guide

mysql explain, explain 보는법, explain 사용법, select_type type, sub query, where 조건, 서브쿼리, 묵시적 형변환, like 검색, 최적화, type, filtered, type, key_len

nomadlee.com


 EXPLAIN은 MySQL이 어떻게 구문을 실행하는지에 대한 정보를 제공한다. SELECT, DELETE, INSERT, REPLACE, UPDATE와 함께 사용할 수 있다.

 간단한 예로, 행이 2개뿐인 users테이블을 조회하는 다음 쿼리에 EXPLAIN을 사용했고, 다음과 같은 결과를 얻었다.

explain select * from users;

 id : SELECT 식별자(구문에 서브쿼리나 UNION 등 SELECT가 다수 존재할 수 있을 경우, 순서에 따라 순차적으로 번호 부여)

select_type : SIMPLE은 서브쿼리나 UNION이 없는 단순 SELECT문일 경우를 나타낸다.

table : 결과물을 뽑아낸 테이블을 나타낸다.

partitions : 테이블의 파티션 중 어떤 파티션을 사용했는지 등의 정보를 나타낸다.

type : ALL은 테이블을 처음부터 끝까지 검색하는 경우로, 일반적으로 테이블 풀 스캔이라고 한다.

possible_keys : 선택 가능한 인덱스 리스트를 나타낸다.

key : 실제로 선택한 인덱스를 나타낸다.

key_len : MySQL이 인덱스에 얼마나 많은 바이트를 사용하고 있는지 보여준다.

ref : index와 비교되는 컬럼으로, key에 나와있는 인덱스에서 값을 찾기 위해 선행 테이블의 어떤 컬럼이 사용되었는지를 나타낸다.

rows : 원하는 행을 찾기 위해 얼마나 많은 행을 읽어야 할지에 대한 예측값을 나타낸다.

filtered : MySQL 엔진에 의해 필터링되어 제거된 레코드를 제외하고 최종적으로 남은 row의 비율(%)을 나타낸다. rows가 2건이고 filtered가 100%이므로 엔진이 전체 2건의 row를 읽어서 100%만 남았다는 의미이다. 이 값은 실제값이 아닌 통계정보로부터 예측된 값이다.

Extra : 추가정보를 나타낸다.

* 의미에 대한 더 자세한 설명은 위 세번째 링크를 참고하면 된다.

300x250

'공부흔적 > 데이터베이스' 카테고리의 다른 글

MySQL에 대량 데이터 빨리 넣기  (0) 2023.02.22
오라클 SQL 성능 튜닝  (0) 2022.05.10
index  (0) 2021.04.19
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함