scanAndOrder: true
nell'output di spiegazione indica che la query deve recuperare i documenti e quindi ordinarli in memoria prima che venga restituito l'output. Questa è un'operazione costosa e avrà un impatto sulle prestazioni della tua query.
L'esistenza di scanAndOrder: true
così come la differenza in nscanned
un n
nell'output di spiegazione indica che la query non utilizza un indice ottimale. In questo caso sembra essere necessario eseguire una scansione della raccolta. Potresti essere in grado di alleviare questo problema includendo le chiavi di indice nel tuo sort
criteri. Dal mio test:
db.posts.find({hashtags: /^noticias/ }).limit(15).sort({hashtags:1, rank : -1}).explain()
Non richiede una scansione e un ordine e restituisce n
e nscanned
del numero di record che stai cercando. Ciò significherebbe anche ordinare gli hashtags
chiave, che potrebbe esserti utile o meno, ma dovrebbe aumentare le prestazioni della query.