MongoDB는 복합 인덱스가 가능하다.
{date: 1, name: 1} 뭐 이런 식으로.
복합인덱스는 순서가 중요하므로 이전까지는 저런 복합인덱스를 만들었다면 query 할 때에도 순서를 정확하게 지켜야 제대로 인덱스를 탈 수 있다고 생각했는데, (일단 이론적으로도 그렇고)
query가 그렇게 왕복잡한 상황이 아니라면 MongoDB의 query optimizer(?)가 나름 스마트하게 인덱스를 태워주는 것으로 확인.
적어도 아래 2개의 query는 explain()을 돌려봤을 동일한 결과값이 나왔다.
db.col.find({date:{$gte:'20120101', $lte:'20121231'}, name: {$in:{'abc', 'def', 'ghi'}}}, {})
db.col.find({name: {$in:{'abc', 'def', 'ghi'}}, date:{$gte:'20120101', $lte:'20121231'}}, {})
'DataBase' 카테고리의 다른 글
[MongoDB] disk io가 일어날 때를 대비한 전략 (0) | 2012.05.03 |
---|---|
NoSQL의 스키마 구성원칙 (0) | 2012.04.25 |
[MongoDB] reIndex (2) | 2012.04.25 |
[MongoDB] 컬렉션 업데이트시 오류 (right object doesn't have full shard key) (0) | 2012.04.25 |
[MongoDB] 기존 collection sharding 조건 (0) | 2012.04.04 |