如何将此查询编入索引以提高性能

时间:2018-06-03 11:28:54

标签: mongodb mongoose mongodb-query mongodb-indexes

我有一个MongoDB查询

Schema: Demo
{
  a: String,
  b: Number,
  c: Bool,
  d: Number
}

Query:
db.Demo.find({ a:'test', c: true }).sort({b:-1, d: -1}).limit(40).explain("executionStats")

我尝试过应用这些索引:

TYPE 1 INDEX

  1. db.Demo.createIndex({b-1,d:-1})
  2. db.Demo.createIndex({一个:1})
  3. db.Demo.createIndex({C:1})
  4. TYPE 2 INDEX

    1. db.Demo.createIndex({a:1,c:1,b:-1,d:-1})
    2. MongoDB始终将TYPE 2 index视为被拒绝的计划并使用TYPE 1 Index。但是TYPE One需要花费更多时间,我认为它可以更加优化。

      按类别1 QUERY解释结果。

      ....
      "executionStats" : {
              "executionSuccess" : true,
              "nReturned" : 20,
              "executionTimeMillis" : 351,
              "totalKeysExamined" : 647,
              "totalDocsExamined" : 647,
      } 
      

1 个答案:

答案 0 :(得分:0)

找到完整的查询索引:

此博客已对此进行了解释

Optimizing MongoDB Compound Indexes

查询将是 db.Demo.createIndex({c:1, b:-1, d:-1, a:1})