我有一个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秒。我是否需要增强查询或添加进一步的索引编制?
答案 0 :(得分:0)
在查询中,您要过滤两个字段-“移动”和“ paytest.type”。您已经创建了4个索引,但是这两个字段都没有。
在其中一个(具有更好的基数)上添加索引,或者在两个字段上添加复合索引。
从一般角度来看,移动字段看起来是索引的更好选择。试试这个:
db.notif.createIndex({ "mobile": 1 });