Der scanAndOrder: true
in der EXPLAIN-Ausgabe gibt an, dass die Abfrage die Dokumente abrufen und dann im Speicher sortieren muss, bevor die Ausgabe zurückgegeben wird. Dies ist ein kostspieliger Vorgang und wirkt sich auf die Leistung Ihrer Abfrage aus.
Die Existenz von scanAndOrder: true
sowie der Unterschied in nscanned
ein n
in der EXPLAIN-Ausgabe zeigt an, dass die Abfrage keinen optimalen Index verwendet. In diesem Fall scheint es erforderlich zu sein, einen Sammlungsscan durchzuführen. Möglicherweise können Sie dieses Problem beheben, indem Sie die Indexschlüssel in Ihre sort
aufnehmen Kriterien. Aus meinen Tests:
db.posts.find({hashtags: /^noticias/ }).limit(15).sort({hashtags:1, rank : -1}).explain()
Erfordert keinen Scan und keine Bestellung und gibt n
zurück und nscanned
der Anzahl der Datensätze, nach denen Sie suchen. Dies würde auch eine Sortierung nach den hashtags
bedeuten Schlüssel, der für Sie nützlich sein kann oder auch nicht, aber die Leistung der Abfrage erhöhen sollte.