728x90
반응형
📘 3-2. 쿼리 성능 분석 및 실행 계획 (EXPLAIN)
쿼리 성능 분석은 데이터베이스 최적화의 중요한 과정 중 하나입니다. MySQL에서 쿼리 성능을 분석하는 도구 중 하나는 바로 EXPLAIN 명령어입니다. 이 명령어는 쿼리가 실행되는 방식을 보여주며, 이를 통해 성능을 개선할 수 있는 방법을 찾아낼 수 있습니다.
📌 EXPLAIN 명령어란?
EXPLAIN은 MySQL 쿼리의 실행 계획을 보여주는 명령어입니다. 쿼리를 실행하기 전에 실행 계획을 미리 확인할 수 있어, 쿼리가 어떻게 실행될지, 어떤 인덱스를 사용할지, 조인 순서 등 중요한 정보를 알 수 있습니다. 이 정보를 바탕으로 성능을 최적화할 수 있습니다.
📌 EXPLAIN 명령어 기본 사용법
EXPLAIN은 쿼리 앞에 붙여서 사용합니다. 예를 들어, 아래와 같이 사용합니다:
EXPLAIN SELECT * FROM users WHERE email = 'test@example.com';
위 쿼리를 실행하면, MySQL은 쿼리가 어떻게 실행될지를 설명하는 실행 계획을 반환합니다. 반환되는 정보는 쿼리 성능 분석에 유용한 여러 가지 항목을 포함하고 있습니다.
📌 EXPLAIN 결과의 주요 항목
EXPLAIN 명령어를 실행하면 다음과 같은 정보가 포함된 결과가 반환됩니다:
항목 | 설명 |
---|---|
id | 쿼리의 각 단계에 대한 식별자. 여러 쿼리가 있을 경우 단계별로 구분됩니다. |
select_type | 쿼리의 유형을 나타냅니다. (단순 SELECT, 서브쿼리 등) |
table | 쿼리에서 접근하는 테이블의 이름. |
type | 조인 방법을 나타냅니다. (예: ALL , index , range 등) |
possible_keys | 쿼리가 실행될 때 사용 가능한 인덱스 목록. |
key | 실제로 사용된 인덱스. |
key_len | 사용된 인덱스의 길이 (바이트 단위). |
ref | 조인된 테이블의 열 또는 상수 값. |
rows | 예상되는 행의 수. 쿼리가 실행될 때 조회할 예상 행 수. |
Extra | 쿼리 실행 시 추가적인 정보 (예: "Using where", "Using index" 등). |
📌 EXPLAIN 결과 해석
EXPLAIN 명령어의 결과를 해석하는 것은 쿼리 성능 최적화의 첫 번째 단계입니다. 아래는 각 항목에 대한 해석 방법입니다:
1. id
쿼리의 각 단계에 대한 고유한 식별자입니다. 서브쿼리가 있으면 서브쿼리마다 고유한 id를 가집니다. 일반적으로 id가 낮을수록 먼저 실행되는 단계입니다.
2. select_type
쿼리의 유형을 나타냅니다. 예를 들어:
- SIMPLE: 단일 SELECT 쿼리
- PRIMARY: 가장 바깥쪽의 쿼리 (서브쿼리가 포함된 경우)
- SUBQUERY: 서브쿼리
3. type
쿼리에서 사용하는 조인 방법을 나타냅니다. type
은 성능 최적화에 있어 매우 중요한 지표입니다. 가능한 값은 다음과 같습니다:
- ALL: 전체 테이블을 스캔 (비효율적)
- index: 인덱스를 사용한 스캔 (전체 테이블이 아니라 인덱스를 스캔)
- range: 인덱스 범위 검색
- ref: 인덱스에서 한 번만 검색
728x90
반응형
'DB 데이터 > 인덱스 & 성능 최적화' 카테고리의 다른 글
데이터베이스 파티셔닝 활용법 (0) | 2025.05.15 |
---|---|
쿼리 캐시 활용법 (1) | 2025.05.14 |
다양한 인덱스 종류와 최적화 (0) | 2025.05.13 |
MySQL 인덱스 기본 개념 및 활용 (1) | 2025.05.11 |