목록 보기
Slow Query 최적화 하기
백엔드

Slow Query 최적화 하기

롯데ON
롯데ON
2024년 6월 12일

두줄요약

주문서 진입 시 발생하던 상품권 점유 인증 조회 쿼리의 병목을 분석하고 개선했습니다. 서브쿼리를 제거하고 결합 인덱스와 LIMIT 1을 적용해 조회 성능을 크게 높였습니다.

문제 상황

  • 주문서 진입 시 상품권 점유 인증 조회 쿼리가 동작하며 속도 저하 발생
  • 최근 한 달만 필요하지만 전체 테이블을 조회해 불필요한 자원 낭비 발생
  • 회원번호 단일 인덱스와 서브쿼리 구조로 인덱스 랜덤 액세스와 중복 참조 비효율 발생

원인 분석

  • 분포도가 넓은 회원번호 컬럼을 인덱스로 사용한 랜덤 액세스 부담
  • 조회 범위가 과도하게 넓어 전체 스캔 후 일부만 사용되는 구조
  • 서브쿼리로 인한 보조 테이블 생성과 인덱스 재참조

해결 방법

  • 서브쿼리 제거 후 회원번호 + 인증일시 결합 인덱스로 변경
  • 휴대폰번호 조건은 메인 쿼리로 이동하고 ORDER BY 인증일시 DESC, LIMIT 1 추가
  • 인덱스 레인지 스캔과 인덱스 기반 정렬, 스트리밍 조회 유도

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...