MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB + Python - много бавна проста заявка

Сигурни ли сте, че вашият индекс е създаден? бихте ли предоставили резултата от getIndexes() от вашата колекция

напр.:db.my_collection.getIndexes()

и обяснението на вашето запитване

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

PS:разбира се, трябва да се съглася с @Aesthete относно факта, че съхранявате много повече от необходимото...

Актуализация на 29/1/2014

перфектно! Както виждате, имате четири различни индекса, когато можете да създадете ЕДИН съставен индекс, който ще включва всички тях.

дефиниране

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

ще ви предостави по-точен индекс, който ще ви позволи да правите заявки за:

  • year
  • year и month
  • year и month и day
  • year и month и day и hour

Това ще направи вашите заявки (с четирите клавиша) много по-бързи, тъй като всичките ви критерии ще бъдат изпълнени в индексните данни!

моля, имайте предвид, че редът на ключовете в ensureIndex() е от решаващо значение, този ред всъщност дефинира горепосочения списък от заявки!

Също така имайте предвид, че ако всичко, от което се нуждаете, са тези 4 полета, отколкото ако посочите правилна проекция
напр.:
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 })

тогава ще се използва само индексът, което е максималната производителност!



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB ИЗБЕРЕТЕ БРОЙ ГРУПА ОТ

  2. Поддържане на поле в mongodb group by

  3. Spring Boot Mongodb търсене по ID връща нула

  4. Как да изчислим процента с помощта на фасет в MongoDB?

  5. MongoDb сериализира генерични типове (класове)