본문 바로가기
개발/MySql

쿼리 실행 계획 분석

by 꼼냥냥 2023. 4. 26.
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

댓글