MongoDB에서는 무조건 인덱싱을 사용하는 것은 옳지 않다.
데이터의 일부를 조회할 때 가장 효율적이며 어떤 쿼리는 인덱스가 없는게 더 빠르다.
인덱스는 컬렉션에서 가져와야 하는 부분이 많을 수록 비효율 적이다.
왜냐면 인덱스를 하나 사용하려면 두 번의 조회를 해야하기 때문이다.
아쉽게도 인덱스가 도움이 될지 혹은 방해가 될지 알 수 있는 공식은 없다.
- 실제 데이터 크기
- 인덱스 크기
- 도큐먼트 크기
- 결과 셋 평균 크기
에 따라 다르기 때문이다.
쿼리의 30% 이상을 반환하는 경우 인덱스는 종종 쿼리 속도를 높인다.
하지만 이 수치는 2% ~ 60% 까지 다양한 양상을 띈다.
인덱스가 적합한 경우
- 큰 컬렉션
- 큰 도큐먼트
- 선택적 쿼리
컬랙션 스캔이 적합한 경우
- 작은 컬렉션
- 작은 도큐먼트
- 비선택적 쿼리
인덱스는 각 컬렉션 당 1회 사용가능하다.
또한 변경하고자 하는 경우 dropIndex를 통해 불필요한 인덱스를 제거할 수 있다.
'Infra > MongoDB' 카테고리의 다른 글
MongoDB - (8) - 트랜잭션 (0) | 2023.04.22 |
---|---|
MongoDB - (7) - 집계 프레임워크 (0) | 2023.04.22 |
MongoDB - (5) - 인덱싱 (0) | 2023.04.21 |
MongoDB - (4) - 쿼리 (0) | 2023.04.20 |
MongoDB - (3) - CRUD 실습 (0) | 2023.04.19 |
댓글