MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

mongodb:akankah limit() meningkatkan kecepatan kueri?

Menggunakan limit() Anda memberi tahu server bahwa Anda tidak akan mengambil lebih dari k dokumen. Mengizinkan beberapa pengoptimalan untuk mengurangi konsumsi bandwidth dan mempercepat sortir. Terakhir, dengan menggunakan klausa batas, server akan dapat menggunakan maksimal 32MB yang tersedia saat menyortir dalam RAM (yaitu:saat urutan pengurutan tidak dapat diperoleh dari indeks).

Sekarang, cerita panjangnya:find() mengembalikan kursor. Secara default, kursor akan mentransfer hasil ke klien dalam batch. Dari dokumentasi ,:

Menggunakan limit() kursor tidak perlu mengambil lebih banyak dokumen daripada yang diperlukan. Sehingga mengurangi konsumsi bandwidth dan latensi.

Harap perhatikan bahwa, berdasarkan kasus penggunaan Anda, Anda mungkin akan menggunakan sort() operasi juga. Dari dokumentasi yang sama seperti di atas:

Dan sort() halaman dokumentasi menjelaskan lebih lanjut:

Batas 32 MB itu tidak spesifik untuk diurutkan menggunakan limit() ayat. Jenis apa pun yang urutannya tidak dapat diperoleh dari indeks akan mengalami batasan yang sama. Namun, dengan polos sort server perlu menampung semua dokumen dalam memorinya untuk mengurutkannya. Dengan terbatas sort, hanya perlu menyimpan k dokumen dalam memori pada saat yang sama.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. tambahkan pengguna ke mongodb melalui python

  2. bagaimana cara menggabungkan berbagai hasil luwak ke satu JSON Array untuk ditampilkan di DataTable?

  3. MongooseJS - Bagaimana cara menyimpan dokumen dan dokumen referensi

  4. Handlebars:Akses telah ditolak untuk menyelesaikan properti dari karena itu bukan milik sendiri dari induknya

  5. Batas luwak/offset dan hitung kueri