我有以下索引
Origin.SN_1_timestamp.milliseconds_-1_error_1我正在运行以下查询
db.getCollection("error").aggregate([
{
"$match":{
"$and":[
{
"error":{
"$ne":"No Error"
}
},
{
"timestamp.milliseconds":{
"$gte":1617561000000
}
},
{
"timestamp.milliseconds":{
"$lte":1617627557579
}
},
{
"Origin.SN":{
"$in":[
"4090",
"4080"
]
}
}
]
}
},
{
"$group":{
"_id":"$error",
"count":{
"$sum":1
}
}
},
{
"$project":{
"_id":0,
"count":"$count",
"error":"$_id"
}
},
{
"$sort":{
"count":-1
}
},
{
"$limit":1
}
])您可以看到,复合索引的顺序在查询中颠倒了。尽管这个查询在IXSCAN中使用了上面的索引。这里面有什么性能损失吗?我是否需要以相反的顺序创建另一个复合索引,以获得更好的性能?
发布于 2021-12-30 12:53:40
我认为性能不受索引顺序的影响,但您可以解释查询并检查执行时间:
https://stackoverflow.com/questions/70528557
复制相似问题