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

strategi indeks mongodb untuk kueri rentang dengan bidang yang berbeda

Terlalu menambahkan sedikit lagi ke baloo jawabannya.

Pada masalah cap waktu vs. panjang. Umumnya server MongoDB tidak akan melihat perbedaan. Panjang penyandian BSON adalah sama (64 bit). Anda mungkin melihat kinerja yang berbeda di sisi klien tergantung pada pengkodean driver. Sebagai contoh, di sisi Java a menggunakan driver 10gen, stempel waktu dirender sebagai Date itu jauh lebih berat daripada Long . Ada driver yang mencoba menghindari overhead tersebut.

Masalah lainnya adalah Anda akan melihat peningkatan kinerja jika Anda menutup rentang untuk bidang indeks pertama. Jadi jika Anda menggunakan indeks yang disarankan oleh baloo :

db.collection.ensureIndex({start: 1, final: 1})

Kueri Anda akan berkinerja (berpotensi jauh lebih baik) jika kueri Anda adalah:

db.collection.find({start:{$gt:DateTime(...),$lt:DateTime(...)}, 
                    final:{$lt:DateTime(...)}})

Secara konseptual, jika Anda menganggap indeks sebagai pohon, rentang tertutup membatasi kedua sisi pohon, bukan hanya satu sisi. Tanpa rentang tertutup, server harus "memeriksa" semua entri dengan start lebih besar dari cap waktu yang diberikan karena tidak mengetahui hubungan antara start dan final .

Anda bahkan mungkin menemukan bahwa kinerja kueri tidak lebih baik menggunakan indeks bidang tunggal seperti:

db.collection.ensureIndex({start: 1})

Sebagian besar penghematan berasal dari pemangkasan ladang pertama. Kasus di mana hal ini tidak terjadi adalah ketika kueri dicakup oleh indeks atau pengurutan/pengurutan untuk hasil dapat diturunkan dari indeks.

HTH - Rob.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Apa driver MongoDB paling matang untuk C#?

  2. Cara memasukkan objek baru tanpa menghapus yang sebelumnya

  3. Mongo memperbarui semua catatan dengan bidang yang nol

  4. Mongodb:gagal terhubung ke server pada koneksi pertama

  5. Node js Mongodb Query NumberLong