Partial Index

백엔드·2023년 6월 14일
0

MongoDB

목록 보기
5/9

🔎 Partial Index

  • 때로는 컬렉션에 있는 문서 일부만 인덱스하는 것이 합리적일 수 있다.

위의 사진은 레스토랑에 대한 document이다.

특정 도시의 요리에 대한 많은 쿼리 중 90%의 쿼리가 평점이 3.5 이상인 레스토랑에 대한 것이라면 Partial Index를 사용하기 좋은 예이다.

⭐️ 저장해야하는 인덱스 키의 수를 효과적으로 줄여 인덱스에 필요한 공간을 절약할 수 있다. (인덱스의 크기가 큰 경우 유용)


👀 예시

db.restaurants.createIndex(
   { cuisine: 1, name: 1 },
   { partialFilterExpression: { rating: { $gt: 5 } } }
)
  • 다음 인덱스는 rating이 5보다 클 경우만 인덱스가 생성된다.
db.restaurants.find( { cuisine: "Italian", rating: { $gte: 8 } } )
  • 위 쿼리는 8 이상인것만 조회를 시도하므로 생성된 인덱스를 사용할 것이다.
db.restaurants.find( { cuisine: "Italian", rating: { $lt: 8 } } )
  • 그러나, 이 쿼리는 8 미만인 것을 조회하므로 인덱스 조건인 5보다 큰 경우에 위배되는 상황이 발생하므로 인덱스를 사용하지 않을것이다.
db.restaurants.find( { cuisine: "Italian" } )
  • 그저 filter조건에만 해당하는 위 쿼리도 인덱스를 사용하지 못한다.

주의사항: _id필드는 partialIndex가 될 수 없다.

ref: https://www.mongodb.com/docs/manual/core/index-compound/#prefixes

profile
백엔드 개발자

0개의 댓글