728x90
쿼리 실행 계획 분석은 MySQL의 쿼리 튜닝에서 가장 기본이 되는 작업 중 하나입니다. 쿼리 실행 계획을 분석하여 쿼리의 성능을 향상시키는 방법을 알아보겠습니다.
1. EXPLAIN 구문 사용 MySQL에서는 EXPLAIN 구문을 사용하여 쿼리 실행 계획을 확인할 수 있습니다. EXPLAIN 구문을 사용하면 쿼리가 어떤 테이블을 참조하고 있는지, 어떤 인덱스를 사용하고 있는지 등의 정보를 확인할 수 있습니다.
예를 들어, 다음과 같은 쿼리를 실행할 때 EXPLAIN 구문을 사용하여 쿼리 실행 계획을 분석할 수 있습니다.
EXPLAIN SELECT *
FROM orders
WHERE order_date BETWEEN '2022-01-01' AND '2022-01-31';
2. 쿼리 실행 계획 분석 결과 해석 EXPLAIN 구문을 사용하여 쿼리 실행 계획을 분석하면, 다음과 같은 정보를 확인할 수 있습니다.
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE users const PRIMARY PRIMARY 4 const 1 Using index
- id: 쿼리 내에서 테이블이나 서브쿼리를 구분하는 번호입니다.
- select_type: SELECT 문의 유형입니다. SIMPLE, PRIMARY, UNION, DERIVED 등의 유형이 있습니다.
- table: 사용된 테이블의 이름입니다.
- partitions: 사용된 파티션의 개수입니다.
- type: 사용된 인덱스의 유형입니다. system, const, eq_ref, ref, fulltext, range, index, all 등의 유형이 있습니다.
- possible_keys: 가능한 인덱스의 목록입니다.
- key: 실제로 사용된 인덱스의 이름입니다.
- key_len: 사용된 인덱스의 길이입니다.
- ref: 사용된 인덱스의 컬럼이나 상수입니다.
- rows: 쿼리를 실행할 때 읽어들인 행의 수입니다.
- filtered: 조건에 부합하는 행의 비율입니다.
- Extra: 추가 정보입니다. Using where, Using index 등의 정보가 포함될 수 있습니다.
쿼리 실행 계획 분석 결과를 통한 쿼리 최적화 쿼리 실행 계획 분석 결과를 통해 쿼리를 최적화할 수 있습니다. 예를 들어, type이 ALL인 경우는 모든 행을 검색하므로 인덱스를 추가로 생성하거나, 검색 조건을 수정하여 쿼리 실행 속도를 향상시킬 수 있습니다. 또한, key_len이 짧은 경우는 인덱스의 길이를 조정하여 쿼리 실행 속도를 향상시킬 수 있습니다.
728x90
'개발 > MySql' 카테고리의 다른 글
데이터베이스 분할(Database Sharding) (0) | 2023.04.26 |
---|---|
서브쿼리 최적화 (0) | 2023.04.26 |
Qurey 최적화 (0) | 2023.04.26 |
Trigger (트리거) (0) | 2022.04.15 |
저장 함수(Stored Function) (0) | 2022.04.15 |
댓글