sql >> Database >  >> NoSQL >> MongoDB

mongodb:zal limit() de vraagsnelheid verhogen?

limit() gebruiken je informeert de server dat u niet meer dan k . zult ophalen documenten. Enkele optimalisaties toestaan ​​om het bandbreedteverbruik te verminderen en het sorteren te versnellen. Ten slotte zal de server, door een limietclausule te gebruiken, de maximale 32 MB die beschikbaar is beter kunnen gebruiken bij het sorteren in RAM (d.w.z. wanneer de sorteervolgorde niet kan worden verkregen uit een index).

Nu, het lange verhaal:find() geeft een cursor terug. Standaard zal de cursor de resultaten in batches naar de client overbrengen. Van de documentatie ,:

limit() gebruiken de cursor hoeft niet meer documenten op te halen dan nodig is. Zo wordt het bandbreedteverbruik en de latentie verminderd.

Houd er rekening mee dat, gezien uw gebruik, u waarschijnlijk een sort() . zult gebruiken operatie ook. Uit dezelfde documentatie als hierboven:

En de sort() documentatiepagina legt verder uit:

Die beperking van 32 MB is niet specifiek om te sorteren met een limit() clausule. Elke soort waarvan de volgorde niet uit een index kan worden verkregen, zal aan dezelfde beperking lijden. Echter, met een gewone sorteer de server moet alles bevatten documenten in het geheugen om ze te sorteren. Met een beperkte sorteren, het hoeft alleen k . op te slaan documenten tegelijkertijd in het geheugen.



  1. Vind documenten waarvan het arrayveld ten minste n elementen van een bepaalde array bevat

  2. Gegevens uit MongoDB (gridfs) lezen via Matlab en Java-stuurprogramma

  3. Getallen opmaken in SQL

  4. MongoDB Indexing vs Array Implementatie voor onze specifieke toepassing