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

rimozione di scanAndOrder:true nel risultato della mia query MongoDB

Grazie per lo shoutout su Dex!

Se non è troppo tardi qui nel 2013, l'indice che consiglio per evitare scanAndOrder qui è { _id:-1, cl:1, user_id:1 }.

Il motivo è perché un $lt su _id e un $in su user_id costituiscono intervalli su più "bucket" di indici. Un indice di qualsiasi ordine diverso da quello precedente significa che quei bucket devono ancora essere ordinati insieme per soddisfare un ordinamento su _id. Inserendo _id per primo, tutti i documenti visitati nell'indice verranno ordinati correttamente in anticipo.

Nota che questo è un leggero miglioramento rispetto al suggerimento di Andre ({ _id:-1, user_id:1, cl:1 }, che dovrebbe anche evitare scanAndOrder) perché consente il controllo di equivalenza diretto su cl per eliminare i risultati.

Dai un'occhiata a http://blog.mongolab.com/2012/06/cardinal- ins/ per maggiori dettagli.