sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB:rendimiento de consulta degradado

1º:Tus consultas son demasiado complicadas. Usar $elemMatch con demasiada frecuencia. Segundo:si puede incluir su clave fragmentada en la consulta, mejorará drásticamente la velocidad.

Voy a optimizar sus consultas para usted:

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

La conclusión es esta:incluir su clave de fragmento cada vez es un ahorro de tiempo.

Incluso podría ahorrar tiempo si recorre las claves fragmentadas y realiza la misma consulta varias veces.