MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB:verschlechterte Abfrageleistung

Erstens:Ihre Abfragen sind zu kompliziert. Verwenden Sie $elemMatch viel zu oft. Zweitens:Wenn Sie Ihren Shard-Schlüssel in die Abfrage einbeziehen können, wird dies die Geschwindigkeit drastisch verbessern.

Ich werde Ihre Abfragen für Sie optimieren:

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()

Fazit:Wenn Sie Ihren Shard-Schlüssel jedes Mal einschließen, sparen Sie Zeit.

Es kann sogar Zeit sparen, Ihre Shard-Schlüssel zu durchlaufen und dieselbe Abfrage mehrmals durchzuführen.