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

La requête de préfixe simple Mongodb avec regex et sort est lente

Le scanAndOrder: true dans la sortie d'explication indique que la requête doit récupérer les documents, puis les trier en mémoire avant que la sortie ne soit renvoyée. Cette opération est coûteuse et aura un impact sur les performances de votre requête.

L'existence de scanAndOrder: true ainsi que la différence de nscanned un n dans la sortie d'explication indique que la requête n'utilise pas un index optimal. Dans ce cas, il semble qu'il soit nécessaire d'effectuer une analyse de collecte. Vous pourrez peut-être résoudre ce problème en incluant les clés d'index dans votre sort Critères. D'après mes tests :

db.posts.find({hashtags: /^noticias/ }).limit(15).sort({hashtags:1, rank : -1}).explain()

Ne nécessite pas de numérisation ni de commande, et renvoie n et nscanned du nombre d'enregistrements que vous recherchez. Cela impliquerait également un tri sur les hashtags clé, qui peut vous être utile ou non, mais devrait augmenter les performances de la requête.