데이터베이스 응답 속도 저하 원인을 분석하고 쿼리 최적화 방법을 정리한다.
쿼리 개선 사례 분석
비효율적인 쿼리를 인덱스 활용 및 컬럼 선별을 통해 개선하는 과정을 분석했다.
개선 전: 전체 조회 및 비효율적 필터링
SELECT * FROM logs WHERE log_message LIKE '%ERROR%';
와일드카드를 전면에 배치할 경우 인덱스 활용이 불가능하여 성능이 저하된다.
개선 후: 인덱스 활용 및 컬럼 선별
SELECT id, created_at, level FROM logs
WHERE created_at >= '2026-05-01' AND level = 'ERROR'
LIMIT 20;
인덱스가 적용된 컬럼을 활용하고 필요한 데이터만 추출하여 성능을 향상시켰다.
성능 저하 요인
- 인덱스 부재: 전체 데이터를 탐색하는 ‘풀 테이블 스캔’을 유발하여 성능을 저하시킨다.
- 과도한 컬럼 조회 (SELECT *): 네트워크 부하와 메모리 소모를 증가시킨다.
- 비효율적 LIKE 연산: 전방 와일드카드(
%문구) 사용 시 인덱스 활용이 제한된다. - 일괄 조회 부하: 페이징 처리(
LIMIT) 누락 시 시스템 부하가 가중된다.
최적화 전략
EXPLAIN 명령어로 실행 계획을 분석하는 습관이 중요하다.
인덱스 활용 여부와 탐색 행 수를 파악하여 병목 지점을 개선하는 것이 쿼리 최적화의 핵심인 것 같다.