데이터베이스 성능 최적화를 위해 쿼리의 내부 실행 과정을 분석하는 EXPLAIN 명령어의 활용법을 정리한다.
실행 계획(EXPLAIN) 분석
쿼리 성능이 의심될 때는 쿼리 앞에 EXPLAIN을 붙여 실행해 보는 것이 좋습니다.
이렇게 하면 데이터베이스가 실제로 어떤 경로를 통해 데이터를 가져오는지 상세한 계획을 보여줍니다.
EXPLAIN SELECT * FROM orders
WHERE user_id = 101 AND status = 'SHIPPED';
실행 결과로 나오는 여러 항목 중 특히 주의 깊게 살펴봐야 할 것들이 있습니다.
주요 항목 해석
-
type: 데이터 접근 방식을 나타낸다.
const,ref는 인덱스를 효율적으로 사용 중임을 의미하며,ALL은 전체 테이블을 탐색하는 ‘풀 테이블 스캔’ 상태를 나타낸다. -
key: 실제로 쿼리 수행에 사용된 인덱스 명칭이다.
-
rows: 쿼리 처리를 위해 검사해야 할 예상 행의 수다.
수치가 작을수록 효율적이다. -
Extra: 추가 정보가 표시된다.
Using index는 성능상 이점이 크지만,Using filesort나Using temporary는 성능 저하의 원인이 될 수 있으므로 개선이 필요하다.
실행 계획 분석을 통해 인덱스 활용 여부를 검증하고 병목 지점을 파악하여 쿼리 성능을 최적화할 수 있다.
효율적인 데이터베이스 운영을 위해 실행 계획을 주기적으로 점검하는 습관이 중요하는 것 같다.