sql >> Databasteknik >  >> NoSQL >> MongoDB

mongodb:kommer limit() att öka frågehastigheten?

Använder limit() du informerar servern att du inte kommer att hämta mer än k dokument. Tillåter vissa optimeringar för att minska bandbreddsförbrukningen och för att påskynda sortering. Slutligen, med hjälp av en gränsklausul kommer servern att bättre kunna använda de 32MB max som är tillgängliga vid sortering i RAM (dvs. när sorteringsordning inte kan erhållas från ett index).

Nu, den långa historien:find() returnerar en markör. Som standard kommer markören att överföra resultaten till klienten i omgångar. Från dokumentationen ,:

Använder limit() markören behöver inte hämta fler dokument än nödvändigt. På så sätt minskar bandbreddsförbrukningen och fördröjningen.

Observera att, givet ditt användningsfall, kommer du förmodligen att använda en sort() operation också. Från samma dokumentation som ovan:

Och sort() dokumentationssidan förklarar ytterligare:

Denna begränsningen på 32 MB är inte specifik för sortering med en limit() klausul. Alla sorter vars ordning inte kan erhållas från ett index kommer att lida av samma begränsning. Men med en vanlig sortera servern måste hålla alla dokument i minnet för att sortera dem. Med en begränsad sortera, det behöver bara lagra k dokument i minnet samtidigt.



  1. rails + docker + sidekiq + Fel vid anslutning till Redis på 127.0.0.1:6379 (Errno::ECONNREFUSED)

  2. MongoDB $concat

  3. Multi-samling, multi-dokument "transaktioner" i MongoDB

  4. Benchmarking-hämtning från redis vs minne i python (med timeit)