MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

mongodb:erhöht limit() die Abfragegeschwindigkeit?

Verwenden von limit() Sie informieren den Server dass Sie nicht mehr als k abrufen werden Unterlagen. Ermöglicht einige Optimierungen, um den Bandbreitenverbrauch zu reduzieren und Sortiervorgänge zu beschleunigen. Schließlich kann der Server mit einer Begrenzungsklausel die maximal verfügbaren 32 MB beim Sortieren im RAM besser nutzen (d. h. wenn die Sortierreihenfolge nicht aus einem Index abgerufen werden kann).

Nun die lange Geschichte:find() gibt einen Cursor zurück. Standardmäßig überträgt der Cursor die Ergebnisse stapelweise an den Client. Aus der Dokumentation ,:

Verwenden von limit() Der Cursor muss nicht mehr Dokumente als nötig abrufen. So werden Bandbreitenverbrauch und Latenz reduziert.

Bitte beachten Sie, dass Sie in Anbetracht Ihres Anwendungsfalls wahrscheinlich ein sort() verwenden werden Betrieb ebenso. Aus derselben Dokumentation wie oben:

Und die sort()-Dokumentationsseite erklärt weiter:

Diese 32-MB-Beschränkung ist nicht spezifisch für das Sortieren mit einem limit() Klausel. Jede Sortierung, deren Reihenfolge nicht aus einem Index erhalten werden kann, leidet unter der gleichen Einschränkung. Allerdings mit einem normalen sort Der Server muss alle enthalten Dokumente in seinem Speicher, um sie zu sortieren. Mit einem eingeschränkten sort, es muss nur k gespeichert werden Dokumente gleichzeitig im Speicher.