MongoDB 효율적인 인덱시 설계

hoyong.eom·2023년 10월 7일
0

몽고DB

목록 보기
1/2
post-thumbnail

MongoDB

효율적인 인덱스 설계

MongoDB에서 뿐만 아니라 사실 다른 RDB에서도 동일하게 적용될 수 있다.

1) 일반적으로는 동등 필터를 사용할 필드가 다중값 필터를 사용할 필드보다 앞에 오도록 복합 인덱스를 설계하자.

이유)
다중값 필터 보다는 동등 필터가 탐색해야할 레코드수를 현저하게 줄여준다. 즉, 선택성(지역성)을 엄청나게 높여줄 수 있다.

2) 정렬이 있다면 정렬 키가 인덱스 앞쪽에 놓이도록 설계하자.

3) 복합인덱스는 일반적으로 트레이드 오프가 존재한다.
인메모리 정렬을 피하기 위해서는 반환하는 도큐먼트 개수보다 더 많은 키를 검사해야한다.
인덱스를 사용해서 정렬하려면 몽고DB가 인덱스 키를 순서대로 살펴볼 수 있어야 한다.
정렬 구성 요소는 동등 필터 바로 뒤, 다중 값 필터 앞에 존재해야한다.

이유)
인덱스는 정렬된 상태를 유지하기 때문이다.

정리
복합 인덱스를 설계할때는 아래와 같이 설계하자.

  • 동등 필터에 대한 키를 맨 앞에 표시해야한다.(그래야 검색 키를 최소화할 수 있다.)
  • 정렬에 사용되는 키는 다중값 필터 앞에 표시해야한다.(인메모리 정렬을 피하기 위함이다.)
  • 다중값 필터에 대한 키는 마지막에 표시해야한다.
    이 지침에 따라 복합 인덱스를 설계한 후 인덱스가 지원하는 쿼리 패턴의 범위를 실제 워크로드에서 테스트하자.

0개의 댓글