2017-08-03 3 views
0

私は非常に頻繁に私が遅いと識別した取得するクエリを持っています。複合インデックスはありませんが、私はすべてのデータポイントに対してインデックスを持っています。質問にマングースクエリ遅い

クエリのようなものになります。

ExternalLead.find({ 
    'price': {$gte:3, $lt:6}, 
    "campaign.id":"an id", 
    createdOn: {$gte: new Date(moment().subtract(10, 'days')), 
       $lte: new Date(moment().subtract(5, 'min')) 
    }}).limit(10).sort({_id:-1}).select('_id').exec(function(err, docs){ 
    if (err) console.log(err); 
    var st = new Date(); 
    console.log(st - s); 
}); 

単純なクエリを、価格を取り除くそのクエリに対しては約50Kのレコードがあります。価格はインデックスされており、私は100%確信しています。私はそれを複数の方法で検証しました。価格を取り除くと、このクエリは約200msで終了し、価格は約20秒かかります。私は複数の価格帯をテストしました。スキャンした最初の10個は一致するはずです。このクエリでインデックスを使用していないことはありますか?

また、このデータベースは現在のところサーバーの約3倍であり、サーバーの問題ではありません。データベース全体がRAMにロードされます。

ノード6.11.2、 マングース:4.10.8、 MongoDBのコア:2.1.1 MongoDBは:3.4

答えて

1

は、我々は価格とcreatedOnのための複合インデックスを必要と判明します。