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

MongoDB + Python - kueri sederhana yang sangat lambat

Apakah Anda yakin bahwa indeks Anda telah dibuat? bisakah Anda memberikan output dari getIndexes() koleksi Anda

misalnya:db.my_collection.getIndexes()

dan penjelasan dari pertanyaan Anda

db.my_collection.find({created_at_year: 2014, created_at_month: 1, created_at_day: 28 }).explain()

PS:tentu saja saya harus setuju dengan @Aesthete tentang fakta bahwa Anda menyimpan lebih dari yang Anda butuhkan...

Pembaruan 29/1/2014

Sempurna! Seperti yang Anda lihat, Anda memiliki empat indeks berbeda ketika Anda dapat membuat SATU indeks gabungan yang akan mencakup semuanya.

mendefinisikan

db.my_collection.ensureIndex({created_at_year: 1, created_at_month: 1, created_at_day: 1, created_at_hour: 1 })

akan memberi Anda indeks yang lebih tepat yang memungkinkan Anda untuk menanyakan:

  • year
  • year dan month
  • year dan month dan day
  • year dan month dan day dan hour

Ini akan membuat kueri Anda (dengan empat kunci) jauh lebih cepat, karena semua kriteria Anda akan terpenuhi dalam data indeks!

harap dicatat bahwa urutan kunci di ensureIndex() sangat penting, urutan itu sebenarnya mendefinisikan daftar kueri yang disebutkan di atas!

Perhatikan juga bahwa jika yang Anda butuhkan hanyalah 4 bidang ini, daripada jika Anda menentukan proyeksi yang benar
misalnya:
db.my_collection.find({created_at_year: 2014, created_at_month: 1, created_at_day: 28}, { created_at_year: 1, created_at_month: 1, created_at_day: 1 })

maka hanya indeks yang akan digunakan, yang merupakan kinerja maksimal!



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Manajemen Database Tercanggih:ClusterControl - Panduan

  2. Apa motivasi untuk mengintegrasikan mongodb dengan solr

  3. Keluarkan objek biasa ke dokumen luwak

  4. kesalahan mongoDB:Kesalahan:gagal terhubung ke [localhost:27017]

  5. mongodb dan mongomapper