Enterprise Infrastructure Intelligence ● Certified engineers online · Fast response guaranteed
웹서버/DB

MySQL EXPLAIN으로 슬로우 쿼리 잡는 법

웹 서비스가 느려질 때 가장 먼저 의심해야 할 곳은 DB 쿼리입니다. EXPLAIN 명령으로 실행 계획을 읽고 인덱스 문제를 찾아내는 방법을 정리했습니다.

2026.08.18  ·  26회  · 

EXPLAIN이란

MySQL의 EXPLAIN 문은 SELECT(및 UPDATE/DELETE 등) 쿼리를 실제로 실행하지 않고, 옵티마이저가 어떤 순서와 방식으로 테이블에 접근할지 실행 계획을 보여줍니다.

기본 사용법

EXPLAIN SELECT * FROM orders WHERE customer_id = 1024;

결과에서 눈여겨봐야 할 컬럼은 type(접근 방식), key(사용된 인덱스), rows(예상 검사 행 수)입니다. type이 ALL이면 인덱스를 못 타고 풀 테이블 스캔을 하고 있다는 뜻입니다.

슬로우 쿼리 로그 활성화

어떤 쿼리가 느린지 먼저 찾아야 EXPLAIN으로 분석할 수 있습니다.

SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;  -- 1초 이상 걸리는 쿼리 기록

인덱스 추가로 해결하기

WHERE 절이나 JOIN 조건에 자주 쓰이는 컬럼에 인덱스가 없으면 풀 스캔이 발생합니다.

CREATE INDEX idx_customer_id ON orders (customer_id);

인덱스 추가 후 다시 EXPLAIN을 실행해 type이 ref나 range로 바뀌고 rows 값이 줄었는지 확인합니다.

주의할 점

인덱스를 무분별하게 추가하면 쓰기(INSERT/UPDATE) 성능이 떨어집니다. 실제로 자주 조회되는 컬럼 위주로 최소한만 추가하는 것이 원칙입니다.

WIKIDATA WORKSTATION
AI·렌더링에 최적화된
전문가용 워크스테이션
NVIDIA RTX GPU · 최대 192GB 메모리 · ECC 지원