慢MongoDB查询:你能解释一下原因吗?

时间:2012-01-04 00:16:09

标签: performance mongodb indexing profiler

我有一个MongoDB查询需要花费不合理的长时间才能运行,但它:

  • 仅扫描6个对象
  • 点击索引
  • 一直需要~1500毫秒(不是分页或以其他方式占用)
  • 在mongostat
  • 中索引未命中%为0

它出现在探查器中(没有explain()),我不明白为什么它这么慢。有什么想法吗?

gimmebar:PRIMARY> db.assets.find({ owner: "123", avatar: false, private: false }).sort({date: -1}).explain()
{
    "cursor" : "BtreeCursor owner_1_avatar_1_date_-1",
    "nscanned" : 6,
    "nscannedObjects" : 6,
    "n" : 6,
    "millis" : 1567,
    "nYields" : 0,
    "nChunkSkips" : 0,
    "isMultiKey" : false,
    "indexOnly" : false,
    "indexBounds" : {
        "owner" : [
            [
                "123",
                "123"
            ]
        ],
        "avatar" : [
            [
                false,
                false
            ]
        ],
        "date" : [
            [
                {
                    "$maxElement" : 1
                },
                {
                    "$minElement" : 1
                }
            ]
        ]
    }
}

1 个答案:

答案 0 :(得分:4)

缺少private键上的索引?

BtreeCursor owner_1_avatar_1_date_-1 vs .find({ owner: "123", avatar: false, private: false }).sort({date: -1})