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

стратегия за индекс на mongodb за заявка за диапазон с различни полета

Също така добавете малко повече към baloo отговорът на.

Относно проблема с времевия печат срещу дългия. Обикновено MongoDB сървърът няма да види разлика. Дължината на BSON кодиране е същата (64 бита). Може да видите различна производителност от страна на клиента в зависимост от кодирането на драйвера. Като пример, от страна на Java, използвайки драйвера 10gen, времевият печат се изобразява като Date което е много по-тежко от Long . Има драйвери които се опитват да избегнат тези допълнителни разходи.

Другият проблем е, че ще видите подобрение на производителността, ако затворите диапазона за първото поле на индекса. Така че, ако използвате индекса, предложен от baloo :

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

Вашата заявка ще се представи (потенциално много) по-добре, ако заявката е:

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

Концептуално, ако мислите за индексите като за дърво, затвореният диапазон ограничава двете страни на дървото вместо само едната страна. Без затворения диапазон сървърът трябва да "проверява" всички записи с start по-голям от предоставения времеви печат, тъй като не знае за връзката между start и final .

Може дори да откриете, че производителността на заявката не е по-добра, като използвате индекс на едно поле като:

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

Повечето спестявания са от резитбата на първото поле. Случаят, в който това няма да е така, е когато заявката е покрита от индекса или подреждането/сортирането на резултатите може да бъде извлечено от индекса.

HTH - Роб.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Създавайте, четете, актуализирайте, изтривайте данни с помощта на Node.js - Mongoose

  2. Mongo DB има ли режим In-Memory?

  3. $skip и $limit в рамката за агрегиране

  4. Съхранявайте XML данни в колекция mongodb

  5. Когато MongoDB вмъкне дата, тя я преобразува в UTC