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'}}, {})


Posted by bloodguy
,