【问题标题】:Mongodb find query running long timeMongoDB查找查询运行时间长
【发布时间】:2018-04-20 20:26:04
【问题描述】:

我正在使用 mongodb 最新版本 3.4.10。我有一个名为 transaction 的集合名称,有 14000 条记录。下面的查询我运行它需要 10 秒。

command : db.transaction.find({mcCreatedTime : { $gte:ISODate("2017-10-01T00:00:00.000Z"), $lte:ISODate("2017-11-02T23:59:59.000Z ")}})

它将返回预期的记录,需要很长时间,大约 10 秒。我需要在毫秒内完成查询。

我使用的是 Windows 8.1 和 4GB 的 RAM 和 500GB 的硬盘。

【问题讨论】:

    标签: mongodb performance


    【解决方案1】:

    尝试将索引创建为:

    db.transaction.createIndex({mcCreatedTime:1}, {background:true})
    

    您需要查看explain 以检查您的查询缓慢的原因。

    【讨论】:

    • 我已经创建了索引。但没有运气。完成需要 10 秒
    • 你有多少数据?解释命令返回什么?
    • 查询返回正确的输出6301条记录。在我的交易集合中,它有 14000 条记录。
    • 解释看起来像使用 IXSCAN 的查询 .."executionStats" : { "executionSuccess" : true, "nReturned" : 6301, "executionTimeMillis" : 15, "totalKeysExamined" : 6301, "totalDocsExamined" : 6301,
    • 您的查询只需 15 毫秒即可在 DB 中执行 :)
    【解决方案2】:

    在数据库管理系统中获得更快查询结果的最佳方法是构建索引。

    尝试在mcCreatedTime 字段上创建索引以使其更快地返回结果。

    升序:db.transaction.createIndex({'mcCreatedTime':1}) 应该能够创建所需的索引。

    Mongo DB Index Creation

    【讨论】:

    • 索引已创建。但查询结果很慢
    • @K.Boopathi17 你能检查一下你是否在日期列上实现了升序和降序索引,因为在进行排序或范围搜索时,两者都是更快的结果所必需的。 stackoverflow.com/a/10330373/1889046
    猜你喜欢
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多