반응형
✅ EXPLAIN CURRENT란?
MySQL Workbench의 기능 중 하나로:
현재 작성된 쿼리를 실행하지 않고, MySQL이 **어떻게 실행할 것인지 계획(Execution Plan)**을 보여주는 기능입니다.
▶️ 실행 방법:
- 메뉴: Query → Explain Current Statement
- 단축키: Ctrl + Alt + X
🔍 EXPLAIN과 EXPLAIN CURRENT의 차이
항목 | EXPLAIN 문장 | EXPLAIN CURRENT |
사용 방식 | EXPLAIN SELECT ... 직접 작성 | 쿼리 위에서 단축키 (Ctrl + Alt + X) |
실행 여부 | 실행 안 함 (예측만 함) | 실행 안 함 (Workbench 내장 도구) |
결과 | 텍스트 테이블 | 시각적 실행 계획 (Visual Plan) |
대상 | 명시된 쿼리 | 현재 커서가 위치한 쿼리 |
🧠 EXPLAIN CURRENT가 보여주는 주요 정보
항목 | 설명 |
type | 조인 방식 (ALL, index, ref 등) — ALL이면 비효율 |
possible_keys | 사용할 수 있는 인덱스 |
key | 실제 사용된 인덱스 |
rows | MySQL이 읽을 것으로 예측한 행 수 |
Extra | Using where, Using index, Using filesort 등 중요 정보 포함 |
📌 예시
SELECT * FROM orders WHERE saleprice > 50000;
EXPLAIN CURRENT를 실행하면 다음과 같은 시각적 도식이 나올 수 있습니다:
- Table: orders
- Access type: range
- Key used: index on saleprice
- Rows: 10
- Extra: Using where
이 경우는 인덱스가 잘 사용된 예 (성능 좋음)
✅ 색상으로 직관적 파악 (Workbench Visual Explain)
색상 | 의미 |
🔵 파란색 | 매우 최적화된 실행 경로 |
🟢 초록색 | 적절히 효율적인 실행 |
🟡 노란색 | 경고: 인덱스 미사용 가능 |
🔴 빨간색 | 매우 비효율적 (풀 테이블 스캔 등) — 튜닝 필요 |
📝 요약
항목 | 내용 |
이름 | EXPLAIN CURRENT |
위치 | Workbench Query > Explain Current Statement 또는 Ctrl + Alt + X |
역할 | 실행하지 않고 실행계획을 미리 보여줌 |
실무 팁 | 실행 전에 항상 EXPLAIN CURRENT로 풀 스캔/인덱스 사용 여부 체크 |
왜 EXPLAIN CURRENT를 사용해서 실행계획을 먼저 확인하느냐?
→ 이는 SQL 성능 관리의 핵심 원칙과 직결됩니다.
✅ EXPLAIN CURRENT로 먼저 확인하는 이유
1. ❌ 실수로 대량 데이터 삭제·갱신 방지
DELETE FROM orders; -- 조건 없이 실행하면 재앙
- 쿼리를 그냥 실행하면 수천/수만 건 삭제 가능
- EXPLAIN CURRENT는 쿼리를 실행하지 않고도 어떤 테이블에 영향이 가는지 확인 가능
- ▶️ 사전 안전검사 역할
2. 🧠 MySQL의 **실행 계획(Execution Plan)**을 예측해서 성능 문제 조기 발견
예시:
SELECT * FROM orders WHERE saleprice > 50000;
- EXPLAIN CURRENT 결과:
- type = ALL → Full Table Scan 발생
- key = NULL → 인덱스 미사용
- 이런 경우:
- ▶️ saleprice에 인덱스 생성 검토
- ▶️ LIMIT, WHERE, JOIN 조건 튜닝 필요
3. 🔍 인덱스가 제대로 사용되는지 검증
예시:
SELECT * FROM customer WHERE name = '김철수';
- 만약 name에 인덱스가 없으면 type = ALL (성능 저하)
- 인덱스가 있으면 type = ref 또는 const (빠름)
- ▶️ EXPLAIN CURRENT로 미리 확인하고 인덱스 전략을 최적화 가능
4. ⚡ 실행 전에 쿼리의 비용(row 수, join 방식)을 시각적으로 예측 가능
항목 | 설명 |
rows | 예상되는 스캔 대상 row 수 |
key | 실제로 사용할 인덱스 |
Extra | Using where, Using index, Using filesort 등 중요 힌트 |
- ▶️ 실행 후 느리다고 후회하는 게 아니라, 실행 전에 느릴 것을 미리 감지
✅ 한 줄 정리
EXPLAIN CURRENT는 쿼리를 실행하지 않고도 그 쿼리가 데이터베이스에 어떤 영향을 주고, 얼마나 효율적으로 실행될지를 사전에 예측해주는 도구입니다.
→ 성능 문제 예방 + 실수 방지라는 이중 효과!
🛠️ 실제 실무에서 활용하는 이유 요약
이유 | 효과 |
대용량 조작 전에 사전 점검 | 실수 방지 (DELETE, UPDATE, JOIN) |
성능 튜닝 지표 제공 | 인덱스 사용 여부, 조인 방식 확인 |
비용 예측 | rows, filtered, type 등을 통해 부담 파악 |
실행 계획 시각화 | Workbench에서 색상 + 다이어그램으로 직관적 이해 |
반응형
'MySQL' 카테고리의 다른 글
SQL 중첩 질의 Subquery 조인 join 외래 키 제약조건 FOREIGN KEY 트랜잭션 start commit bollback (0) | 2025.06.20 |
---|---|
SELECT ORDER BY JOIN GROUP BY 조인 집계 함수 그룹별 HAVING (6) | 2025.06.13 |
MySQL 설치 가이드 Windows용 다운로드 (0) | 2025.06.11 |