0

插入图片就报错,profiler在生产也截不出来,只能口述一下请各位大佬解惑了。

目前有一个索引A是{‘a’:1,’duration’:1,’time’:-1},还有一个索引B是{‘a’:1,’c’:1,’d’:1,’time’:-1}以及C是{‘a’:1,’e’:1,’f’:1,’g’:1,’time’:-1}

此时我的查询语句为find({‘a’:’1234′,’duration’:{$gte:200},’time’:{$gte:ISODate(‘2022-01-01’)}}).sort({‘time’:-1})

我的预期是使用索引A,但是实际上使用的B或者C。请问各位大佬这是因为什么呢

我的查询语句是

db.collection.find({“business_fields.center_id”:”8629″,

“recordDuration”:{$gte:600},

“business_fields.dial_starttime”:{$gte:ISODate(“2021-12-01”)}

}).sort({“business_fields.dial_starttime”:-1})

WinningPlan命中的索引是

{“business_fields.center_id”:1,

“business_fields.list_type”:1,

“business_fields.list_detail”:1,

“business_fields.dial_starttime”: -1}

RejectedPlan命中的索引是

{“business_fields.center_id”:1,

“recordDuration”:1,

“business_fields.dial_starttime”: -1}

涉及字段的数据结构是这样的

{”xxx”:”xxx”,

“recodDuration”: 996,

“business_fields”:{“xxx”:”xxx”,

“center_id”:”8629″,

“dial_starttime”:ISODate(“2021-12-25”)

“list_type”:”XIV”,

“list_detail”:”XII”,

“XXX”:”XXX”

},

“XXX”:”XXX”

}

选择最佳答案