hola 개발

[ MySQL ] 실행 계획을 분석하는 방법 본문

데이터베이스

[ MySQL ] 실행 계획을 분석하는 방법

hola. 2025. 3. 19. 12:41

[ 실행 계획이란? ]

옵티마이저가 SQL문을 어떤 방식으로 처리할지 계획하는 것을 의미합니다.

즉, 실행 계획이 SQL 구문의 성능을 결정합니다.

실행 계획을 분석할 줄 알아야 SQL 구문의 문제가 어디인지 파악 할 수 있습니다.

그렇다면 어떻게 실행 계획을 분석할 수 있을까요?

 

[ 실행 계획 확인 방법 ]

# EXPLAIN 

: 실행 계획을 조회 할 수 있습니다. 아래는 EXPLAIN시 중점을 두고 봐야 할 값들 입니다. 

 

- type : 테이블의 데이터를 어떤 방식으로 조회하는지를 알려줍니다. (ALL,index,const,range,ref )

 * ALL : 풀 테이블 스캔을 뜻하며, 인덱스를 활용하지 않고 테이블을 전부 다 뒤져서 데이터를 찾는 방식

 * index : 풀 인덱스 스캔을 뜻하며, 인덱스 테이블을 끝까지 다 뒤져서 찾는 방식, 인덱스의 테이블이 실제 테이블보다                      작기 때문에 풀테이블보다는 효율적, 하지만 인덱스 테이블 전체를 읽어야 하므로 아주 효율적인 것은 아닙니다.

 * const : 데이터를 단번에 찾아오는 것을 뜻하며, 고유 인덱스나 기본 키로 조회한 경우 출력됩니다. 

 * range : 인덱스 레인지 스캔을 뜻하며, 인덱스를 활용해 범위 형태의 데이터를 조회하는 경우를 의미합니다.

 * ref : 비고유 인덱스를 사용한 경우를 뜻합니다. UNIQUE가 아닌 컬럼의 인덱스를 사용한 경우를 의미합니다.

 

- possible keys : 사용할 수 있는 인덱스 목록 보여줍니다.

- key :  데이터 조회 시 실제 사용한 인덱스 값입니다.

- ref : 조인 상황에서 어떤 값을 기준으로 데이터를 조회했는 지 보여줍니다.

- rows : 데이터 액세스 수를 의미합니다. 이 값을 줄이는 것이 SQL 튜닝의 핵심입니다.

 

# EXPLAIN ANALYZE

: 실행 계획을 자세하게 조회 할 수 있습니다.

 

- actual time=0.0002..0.0034 : 앞에 있는 숫자인 0.0002 의 의미는 첫 번째 데이터에 접근하기까지의 시간이며, 뒤에 있는 0.0034는 마지막 데이터까지 접근한 시간을 의미합니다.

 

 

# 참고

- https://www.inflearn.com/course/%EB%B9%84%EC%A0%84%EA%B3%B5%EC%9E%90-mysql-%EC%84%B1%EB%8A%A5%EC%B5%9C%EC%A0%95%ED%99%95-sql%ED%8A%9C%EB%8B%9D/dashboard

 

비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편) 강의 | JSCODE 박재성 - 인프런

JSCODE 박재성 | , 🤬 에라이, 못 해먹겠네!비전공자로 개발을 시작해 여러 회사에서 CTO로 활동하다가, 현재는 교육자로 활동하고 있는 박재성이라고 합니다. 저도 비전공자로 개발을 시작해 MySQL

www.inflearn.com

- SQL 레벨업