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

mongodb:limit() aumenterà la velocità della query?

Usando limit() informi il server che non recupererai più di k documenti. Consentendo alcune ottimizzazioni per ridurre il consumo di larghezza di banda e per accelerare gli ordinamenti. Infine, utilizzando una clausola limit il server sarà in grado di utilizzare al meglio i 32 MB max disponibili durante l'ordinamento in RAM (es.:quando non è possibile ottenere l'ordinamento da un indice).

Ora, la lunga storia:find() restituisce un cursore. Per impostazione predefinita, il cursore trasferirà i risultati al client in batch. Da la documentazione ,:

Usando limit() il cursore non avrà bisogno di recuperare più documenti del necessario. Riducendo così il consumo di larghezza di banda e la latenza.

Tieni presente che, dato il tuo caso d'uso, probabilmente utilizzerai un sort() anche l'operazione. Dalla stessa documentazione di cui sopra:

E la pagina della documentazione sort() spiega ulteriormente:

Quella limitazione di 32 MB non è specifica per l'ordinamento utilizzando un limit() clausola. Qualsiasi tipo il cui ordine non può essere ottenuto da un indice soffrirà della stessa limitazione. Tuttavia, con un semplice ordina il server deve contenere tutto documenti in sua memoria per ordinarli. Con un limitato ordina, deve solo memorizzare k documenti in memoria contemporaneamente.