MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Requête mongoDB ridiculement lente sur une petite collection dans une base de données simple mais volumineuse

Le avgObjSize n'est pas conforme à l'estimation de 280 octets. Il indique que vos objets font en moyenne environ 5 Mo et storageSize est proche de 1 Go. Si vous êtes limité en mémoire, l'exécution d'une requête qui doit accéder à tous les 1 Go de fichier entraînerait de nombreux défauts de page.

Avez-vous essayé de compacter ?

db.runCommand({compact: 'Aggregates'})

ou réparation ?

db.repairDatabase()

Si cela ne fonctionne pas, essayez de retirer uniquement les champs nécessaires pour la somme plutôt que de retirer le document entier. Il se peut que ces documents pèsent en fait 5 Mo et qu'il faille passer du temps à extraire des données via le réseau.

def get_total():
    start = datetime.now()
    print sum([x['daily_total_pages'] for x in c.Aggregates.find({}, {"daily_total_pages": 1})])
    end = datetime.now()
    print (end-start).seconds