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

MongoDB :Редът на индексите и редът на заявките трябва да съвпадат?

Редът на условията във вашата заявка не влияе върху това дали може да използва индекс или не.

например типична структура на документа:

{
    "FieldA" : "A",
    "FieldB" : "B"
}

Ако имате комбиниран индекс за A и B :

db.MyCollection.ensureIndex({FieldA : 1, FieldB : 1})

Тогава и двете от следните заявки ще могат да използват този индекс:

db.MyCollection.find({FieldA : "A", FieldB : "B"})
db.MyCollection.find({FieldB : "B", FieldA : "A"})

Така че подреждането на условията в заявката не пречи на индекса да се използва – което според мен е въпросът, който задавате.

Можете лесно да тествате това, като изпробвате 2-те заявки в обвивката и добавите .explain() след находката. Направих това просто, за да потвърдя и и двете показаха, че е използван комбинираният индекс.

обаче, ако изпълните следната заявка, това НЯМА да използва индекса, тъй като FieldA не се отправя към:

db.MyCollection.find({FieldB : "B"})

Така че подреждането на полетата в индекса определя дали може да се използва от заявка, а не подреждането на полетата в самата заявка (това имаше предвид Лукас).



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да намерите името на полето в MongoDB на произволна дълбочина

  2. Редовен израз за MongoDB ObjectID

  3. Mongodb агрегат:преобразувайте датата в друга часова зона

  4. MongoDB $round

  5. Проследяване на използването на паметта на MongoDB