인덱스 적용 유무 차이

no.oneho·2023년 10월 29일
0

기존에 오프셋 기반 페이지네이션 쿼리를 사용중인데 사이드 프로젝트다 보니 프론트 개발자의 니즈에 맞게 여러 데이터를 추가하다 요청속도가 1초나 나와버렸다.
아 좀 충격..
조인안에 서브쿼리로 최적화 하는 방식으로 생각은 났지만 그동안 한번도 사용하지 않고 이론만 알고있던 인덱스를 생성해보았다.

먼저 인덱스를 걸기 좋은 컬럼이 무엇인지 생각 해 보았다.
내가 아는 내용에서는 where문과 order by문에 들어가는 컬럼들에게 걸어주어야 효율적이고 데이터의 범위가 넓으며, 중복이 적은 컬럼에게 걸어야 효율적으로 알고있다.

먼저 데이터 중복도는 pk나 uk가 아닌 이상 완벽히 제어가 불가능하므로 어쩔수없이 생각하지 않기로하였다.

내가 선택한 컬럼들의 조건은 매번 where 조건에 들어가거나 조인의 조건으로 사용되는 컬럼이였는데 그러한 생각을 통해

소프트 딜리트를 담당하는 is_deleted 컬럼과 fk들을 index로 생성해주었다.

CREATE INDEX idx_review_book_id
ON review (book_id)

위와같은 방식으로 생성하였고 EXPLAIN을 확인 해보니 풀 테이블 스캔에서 벗어나 좀 더 조회 성능이 좋아진 거 같다

아래는 인덱스 적용 전후 응답 시간 차이이다.


profile
안녕하세요 백엔드 개발자를 지망하고있는 노원호라고합니다.

0개의 댓글