sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB:försämrad frågeprestanda

Första:Dina frågor är alltför komplicerade. Använder $elemMatch alldeles för ofta. 2nd:om du kan inkludera din shard-nyckel i frågan kommer det att drastiskt förbättra hastigheten.

Jag ska optimera dina frågor för dig:

db.user.find({
     createdAt: {
          $gte: ISODate("2014-12-01"), 
          $lte: ISODate("2014-12-31")
     }
}).explain()

db.user.find({
    'transaction.product':'mobile'
}).explain()

db.user.find({
    'transaction.product':'mobile', 
    firstTransaction:{
       $in:[
           ISODate("2015-01-01"),
           ISODate("2015-01-02")
       ]
    }
}).explain()

Slutsatsen är detta:inkludera din shard-nyckel varje gång är en tidsbesparande.

Det kan till och med spara tid att gå igenom dina shard-nycklar och göra samma fråga flera gånger.



  1. windows:rails:fel vid installation av bson_ext

  2. Hur frågar du efter är inte null i Mongo?

  3. Flera nyckel som pekar på ett enda värde i Redis (Cache) med java

  4. Commit och diskbeständighet i en NoSQL(MongoDB)