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

Menyortir pada Beberapa bidang mongo DB

Pengoptimal kueri MongoDB bekerja dengan mencoba berbagai paket untuk menentukan pendekatan mana yang paling cocok untuk kueri tertentu. Rencana pemenang untuk pola kueri tersebut kemudian di-cache untuk ~1.000 kueri berikutnya atau hingga Anda melakukan explain() .

Untuk memahami rencana kueri mana yang dipertimbangkan, Anda harus menggunakan explain(1) , misalnya:

db.col.find({category:'A'}).sort({updated: -1}).explain(1)

allPlans detail akan menampilkan semua rencana yang dibandingkan.

Jika Anda menjalankan kueri yang tidak terlalu selektif (misalnya, jika banyak catatan cocok dengan kriteria Anda {category: { $ne:'A'}} ), mungkin lebih cepat bagi MongoDB untuk menemukan hasil menggunakan BasicCursor (pemindaian tabel) daripada mencocokkan dengan indeks.

Urutan bidang dalam kueri umumnya tidak membuat perbedaan untuk pemilihan indeks (ada beberapa pengecualian dengan kueri rentang). Urutan bidang dalam sort mempengaruhi pemilihan indeks. Jika sort() . Anda kriteria tidak sesuai dengan urutan indeks, data hasil harus diurutkan ulang setelah indeks digunakan (Anda akan melihat scanAndOrder:true dalam output jelaskan jika ini terjadi).

Perlu juga dicatat bahwa MongoDB hanya akan menggunakan satu indeks per kueri (dengan pengecualian $or s).

Jadi, jika Anda mencoba mengoptimalkan kueri:

db.col.find({category:'A'}).sort({updated: -1, rating: -1})

Anda akan ingin memasukkan ketiga bidang dalam indeks:

db.col.ensureIndex({category: 1, updated: -1, rating: -1})

FYI, jika Anda ingin memaksa kueri tertentu untuk menggunakan indeks (umumnya tidak diperlukan atau disarankan), ada hint() pilihan yang bisa Anda coba.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB menggunakan klausa OR di mongoengine

  2. Bagaimana Cara Membuat Skema Luwak dengan Array ID Objek?

  3. MongoDB di Azure:Bagaimana Cara Memilih Jenis Instans yang Tepat?

  4. Buat Indeks Teks Wildcard di MongoDB

  5. Database MongoDB dan Statistik Koleksi