我有一个包含以下索引的记录集合:
{"_id":1}
{"car.make":1,"city":1,"car.mileage":1}
执行以下查询:
db.records.aggregate([
{
"$match":{
"car.mileage":{"$in":[1000,2000,3000,4000]},
"car.make":"Honda",
"city":{"$in":["Miami","San Francisco","New York", "Chigaco", "Seattle", "Boston"]}
}
},
{
"$sort":{"_id":-1}
}
])
没有$ sort子句的查询在几毫秒内完成,但添加$ sort子句需要大约2分钟。此查询应返回来自6m文档集合的大约40个文档。关于什么可能导致查询时间的巨大差异的任何线索?
经过额外测试后,即使creation_date
未编入索引,此问题也会因creation_date
之类的其他字段进行排序而消失。任何想法为什么_id
字段的性能会比此聚合中未编制索引的creation_date
字段差得多?