MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

La query del prefisso semplice Mongodb con regex e ordinamento è lenta

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.