Mam kwerendę MongoDB, którą próbuję zoptymalizować. Stworzyłem indeks, który pasuje do pól w zapytaniu, ale wydaje mi się, że MongoDB nie ma możliwości skorzystania z indeksu bez wyraźnej nazwy hint()
, mimo że wersje nscanned
i milli
s są lepsze w przypadku wersji z podpowiedziami.Dlaczego program MongoDB nie używa właściwego indeksu?
Oto indeksy, zapytanie (z lub bez podpowiedzi) i gadatliwy wyjaśnić:
http://paste.roguecoders.com/p/4face5649612e840da04c5fea0491c9b.txt
Jeden dodatkowy bit informacji: wskaźnik ten jest w dużej ish kolekcji, w zestaw replik, więc zbudowałem indeks przy użyciu offline method. Jest teraz obecny we wszystkich węzłach.
(Cytowany na MongoDB-User).
Co zrobić, jeśli utworzono indeks: 'owner_1_date_-1_from_backup_1'? – Sammaye
Mój indeks ma rację. Sortuję na 'date'. (A "podpowiedź()" potwierdza, że jest lepiej.) Indeksowanie tej kolekcji w naszym zestawie danych produkcyjnych zajmuje ponad godzinę, więc nie chcę po prostu wypróbowywać rzeczy bez ważnego powodu. (-: – scoates
Ten link może wyjaśniać, dlaczego otrzymujesz 'scanAndOrder' http://blog.mongolab.com/2012/06/cardinal-ins/ może to również wyjaśnić, dlaczego MongoDb nie widzi utworzonego indeksu jako optymalnego – Sammaye