15분
"이 쿼리 30초나 걸려요"
Day 4: 쿼리가 왜 이렇게 느려?
"이 쿼리 30초나 걸려요"
SQL 고급 - 윈도우 함수와 성능 최적화 > Day 4: 쿼리가 왜 이렇게 느려?
학습 목표
쿼리 성능 문제의 실무 상황을 이해한다 EXPLAIN이 필요한 이유를 체감한다
목요일 아침, 긴급 호출
"이 대시보드 페이지 로딩이 30초나 걸려. 쿼리가 느린 것 같은데 좀 봐줄 수 있어?"
문제의 쿼리:
에디터 로딩 중...
"이 쿼리가 왜 느린지 어떻게 알 수 있지?"
느린 쿼리의 원인들
- Full Table Scan: 인덱스 없이 전체 테이블 읽기
- 비효율적인 JOIN: 중첩 루프로 모든 조합 검사
- 대용량 정렬: 메모리에서 감당 못해 디스크 사용
- 불필요한 데이터: 100개만 필요한데 100만 개 처리
하지만 눈으로는 안 보인다.
EXPLAIN: 쿼리의 CT 촬영
에디터 로딩 중...
결과:
에디터 로딩 중...
Seq Scan: 전체 테이블을 처음부터 끝까지 읽는다! 200만 행을 하나하나 확인 중이었다.
해결: 인덱스 추가
에디터 로딩 중...
다시 EXPLAIN:
에디터 로딩 중...
28초 → 0.1초: 280배 빨라졌다!
오늘 배울 것
- EXPLAIN: 쿼리 실행 계획 읽기
- EXPLAIN ANALYZE: 실제 실행 시간 측정
- 인덱스: 왜 필요하고, 어떻게 만드는지
- 성능 최적화 패턴: 흔한 문제와 해결책
"쿼리가 느리면 EXPLAIN부터!"