| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- set-cookie 안만들어짐
- 존폴쥬얼리
- 자바스크립트 깨질 때
- steam game score
- staem algorithm
- tomcat튜닝
- jsp permission denied
- jsp 예외 permission
- 동시 요청 처리
- Akamai 연구결과
- LLM기반CBF
- 스프링단위테스트방법
- jqx워터마크제거
- 한글 특수문자 자바스크립트
- 존폴결혼예물
- dial timeout
- LLM기반 콘텐츠 추천
- dialtimeout
- 스팀 게임 스코어 알고리즘
- 비개인화추천모델
- 존폴결혼반지
- 존폴반지
- 외부 톰캣 특수문자 깨질 때
- 추천시스템steam
- cookie refreshToke
- 분산파일
- integrationtest
- 분산파일시스템
- spring unit test
- jqxWidget워터마크
- Today
- Total
hola 개발
[ MySQL ] 실행 계획을 분석하는 방법 본문
[ 실행 계획이란? ]
옵티마이저가 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는 마지막 데이터까지 접근한 시간을 의미합니다.
# 참고
비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편) 강의 | JSCODE 박재성 - 인프런
JSCODE 박재성 | , 🤬 에라이, 못 해먹겠네!비전공자로 개발을 시작해 여러 회사에서 CTO로 활동하다가, 현재는 교육자로 활동하고 있는 박재성이라고 합니다. 저도 비전공자로 개발을 시작해 MySQL
www.inflearn.com
- SQL 레벨업
'데이터베이스' 카테고리의 다른 글
| [ mariadb ] EXPLAIN 실행 계획 조회 명령어 공부 #1 (0) | 2026.01.05 |
|---|---|
| [ 문제 해결 ] Duplicate entry ... for key 'PRIMARY' (feat. 테이블에 기본키 값에 해당하는 데이터가 없는데? (1) | 2025.07.02 |
| [ Database ] 데이터에 접근하는 방법은 어떻게 결정할까? (0) | 2024.10.12 |
| 정규화 좀! 쉽고 간단하고 명료하게 정리해보자 (1) | 2024.10.04 |