【问题标题】:Mongoose Query on Index Slow索引慢的猫鼬查询
【发布时间】:2018-01-10 11:34:12
【问题描述】:

我有一个查询很频繁,我认为它很慢。它对我查询的每个数据点都有索引,但没有复合索引。

查询看起来像:

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 条记录。价格是指数化的,我百分百确定。我已经通过多种方式验证了它。如果我删除价格,这个查询在大约 200 毫秒内完成,价格大约需要 20 秒。我已经测试了多个价格范围,它扫描的前 10 个应该是匹配的。这个查询是否有一些没有使用索引的地方?

另外,服务器大约是这个数据库现在需要的 3 倍,这不是服务器问题。整个数据库被加载到 ram 中。

节点 6.11.2, 猫鼬:4.10.8, MongoDB核心:2.1.1 MongoDb:3.4

【问题讨论】:

    标签: node.js mongoose mongodb-query


    【解决方案1】:

    原来我们需要价格和 createdOn 的复合索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-03
      • 2020-06-02
      • 2012-02-03
      • 1970-01-01
      • 2021-03-23
      • 2018-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多