25분
쿼리 최적화: 흔한 문제와 해결
Day 4: 쿼리가 왜 이렇게 느려?
쿼리 최적화: 흔한 문제와 해결
SQL 고급 - 윈도우 함수와 성능 최적화 > Day 4: 쿼리가 왜 이렇게 느려?
학습 목표
흔한 성능 문제 패턴을 인식한다 각 패턴의 해결 방법을 익힌다
패턴 1: SELECT * 피하기
문제
에디터 로딩 중...
- 불필요한 컬럼까지 읽어서 메모리/네트워크 낭비
- 인덱스만으로 처리 가능한 쿼리도 테이블 접근 필요
해결
에디터 로딩 중...
필요한 컬럼만 명시!
패턴 2: 조기 필터링
문제
에디터 로딩 중...
큰 테이블끼리 JOIN 후 필터링 → 느림
해결
에디터 로딩 중...
작은 결과끼리 JOIN!
패턴 3: N+1 쿼리 피하기
문제 (애플리케이션 코드)
에디터 로딩 중...
101번의 쿼리 실행!
해결
에디터 로딩 중...
또는:
에디터 로딩 중...
패턴 4: 페이지네이션 최적화
문제
에디터 로딩 중...
100000개를 읽고 버린 후 10개 반환 → 느림
해결: 커서 기반 페이지네이션
에디터 로딩 중...
OFFSET 대신 WHERE로 시작점 지정!
패턴 5: EXISTS vs IN
IN (때때로 느림)
에디터 로딩 중...
서브쿼리 전체 실행 후 비교
EXISTS (보통 더 빠름)
에디터 로딩 중...
조건 만족하는 행 찾으면 즉시 종료
체크리스트: 느린 쿼리 디버깅
에디터 로딩 중...