인덱스 설계와 카디널리티
·
개발이야기/개발로그
상품 목록 조회에 숨어있는 인덱스 설계 이야기1. 상품 목록 조회, 뭐가 문제인데?우리는 쇼핑몰에서 당연하듯이 "좋아요 순 정렬", "브랜드 필터" 같은 조회 기능을 사용한다. 겉으로 보기엔 단순한 기능이지만, 데이터가 10만 건을 넘어가는 순간 쿼리 한 줄의 차이가 응답 시간을 수십 배까지 벌려놓는다. 이번 과제에서 상품 목록 API의 조회 조건은 크게 세 가지였다. 브랜드 필터링 (brand_id) 좋아요 순 정렬 (like_count DESC) Soft Delete 필터 (deleted_at IS NULL) 인덱스 없이 이 조건들을 조합하면 MySQL은 매번 테이블 전체를 훑으면서 조건에 맞는 행을 찾고, 그 결과를 메모리에서 정렬한다. 10만 건 정도면 사용자가 체감할 수준의 지연이 발생할 수 있..