scanAndOrder: true
w danych wyjściowych wyjaśniania wskazuje, że zapytanie musi pobrać dokumenty, a następnie posortować je w pamięci przed zwróceniem danych wyjściowych. Jest to kosztowna operacja i będzie miała wpływ na wydajność zapytania.
Istnienie scanAndOrder: true
jak również różnica w nscanned
n
w danych wyjściowych wyjaśniania wskazuje, że zapytanie nie używa optymalnego indeksu. W tym przypadku wydaje się, że trzeba wykonać skanowanie kolekcji. Możesz być w stanie złagodzić ten problem, dołączając klucze indeksu do swojego sort
kryteria. Z moich testów:
db.posts.find({hashtags: /^noticias/ }).limit(15).sort({hashtags:1, rank : -1}).explain()
Nie wymaga skanowania i zamawiania, zwraca n
i nscanned
liczby rekordów, których szukasz. Oznaczałoby to również sortowanie według hashtags
klucz, który może być przydatny lub nie, ale powinien zwiększyć wydajność zapytania.