2013-04-23 4 views
5

내가 최적화하려고하는 MongoDB 쿼리가 있습니다. 쿼리의 필드와 일치하는 인덱스를 만들었지 만 MongoDB의 쿼리 계획자가 nscannedmilli이 힌트 버전에 더 좋음에도 불구하고 명시 적 hint()없이 인덱스를 사용하는 것처럼 보일 수 없습니다. 여기 MongoDB가 올바른 색인을 사용하지 않는 이유는 무엇입니까?

는 인덱스 (힌트와없이) 쿼리이며, a는 자세한 설명 :

http://paste.roguecoders.com/p/4face5649612e840da04c5fea0491c9b.txt

정보 중 하나는 추가 비트 :이 지수는에 큰 틱 컬렉션입니다 복제본 집합이므로 offline method을 사용하여 색인을 만들었습니다. 현재 모든 노드에 있습니다.

는 (원래 MongoDB-User에 게시.)

+0

색인을 만든 경우 어떻게해야합니까? 'owner_1_date_-1_from_backup_1'? – Sammaye

+0

내 인덱스가 맞습니다. 나는'날짜'를 정렬 중입니다. (그리고 '힌트()'가 더 좋다는 것을 확인해줍니다.) 프로덕션 데이터 세트에서이 컬렉션을 인덱싱하는 데 1 시간 이상이 걸리므로 좋은 이유없이 그냥 시도하지 않을 것입니다. (- : – scoates

+2

이 링크는 왜 'scanAndOrder'를 얻었는지 설명 할 수 있습니다. http://blog.mongolab.com/2012/06/cardinal-ins/ MongoDb에서 생성 된 색인이 최적의 것으로 보이지 않는 이유를 설명 할 수도 있습니다 – Sammaye

답변

3

이가 {에서 $ : []}의 값 중 하나를 할 때 SERVER-5063 수정에 영향을 미치는 2.4 회귀에 될 것으로 보인다 절은 "널 (null)"입니다. 나는 새 티켓 https://jira.mongodb.org/browse/SERVER-9495로 신청했는데 나는 곧 시련을 당하고 고쳐질 것이라고 희망한다.

한편, null 값 (또는 필드 없음?)과 함께 true/false와 함께 몇 가지 옵션이 있는데, 일부는 쿼리를 변경하여 일부 데이터를 변경하는 것입니다. 그저 2.2로 낮추라고 충고하는 것이 아니지만 가능성도 있습니다.

관련 문제