如何增强mongodb的查询速度

时间:2019-06-06 02:02:18

标签: mongodb

我有一个MongoDB集合,查询时需要8-10秒。

设置了一些索引,这是db.notif.getIndexes();

的输出
db.notif.getIndexes()
[
        {
                "v" : 2,
                "key" : {
                        "_id" : 1
                },
                "name" : "_id_",
                "ns" : "testing.notif"
        },
        {
                "v" : 2,
                "unique" : true,
                "key" : {
                        "id" : 1
                },
                "name" : "id_1",
                "ns" : "testing.notif",
                "background" : true
        },
        {
                "v" : 2,
                "key" : {
                        "deleted" : 1
                },
                "name" : "deleted_1",
                "ns" : "testing.notif",
                "background" : true
        },
        {
                "v" : 2,
                "key" : {
                        "__ttl" : 1
                },
                "name" : "__ttl_1",
                "ns" : "testing.notif",
                "background" : true
        }
]

当我执行此查询时

db.notif.find({
  "mobile": "6281388756078",
  "paytest.type": { "$in": ["IKLAN","INFO","WEB"] }
}).explain("executionStats")

需要8-9秒。我是否需要增强查询或添加进一步的索引编制?

1 个答案:

答案 0 :(得分:0)

在查询中,您要过滤两个字段-“移动”和“ paytest.type”。您已经创建了4个索引,但是这两个字段都没有。

在其中一个(具有更好的基数)上添加索引,或者在两个字段上添加复合索引。

从一般角度来看,移动字段看起来是索引的更好选择。试试这个:

db.notif.createIndex({ "mobile": 1 });