每当我使用解释在 MongoDB 上运行计数查询时,我都可以看到两个不同的阶段 COUNT_SCAN 和 IXSCAN。我想知道它们之间的性能差异以及如何改进查询。字段已编入索引。
以下查询:
db.collection.explain(true).count({field:1}})
Run Code Online (Sandbox Code Playgroud)
使用 COUNT_SCAN 和查询如下:
db.collection.explain(true).count({field:"$in":[1,2]})
Run Code Online (Sandbox Code Playgroud)
使用 IXSCAN。
我为我的一些项目应用了appName,但在currentOp中,某些查询缺少它.大多数情况下,计数查询都缺少它.
{
"desc" : "conn1786739",
"threadId" : "140671499200256",
"connectionId" : 1786739,
"client" : "179.22.4.3:42354",
"active" : true,
"opid" : -1076773120,
"secs_running" : 6,
"microsecs_running" : NumberLong(6928801),
"op" : "command",
"ns" : "dbname.members",
"query" : {
"count" : "memebers",
"query" : {
"$or" : [
{
"$and" : [
{
"condition1" : {
"$gt" : 0
}
},
{
"condition1" : 0
},
]
}
],
},
"readConcern" : {
}
},
"numYields" : 28,
"locks" : {
"Global" : "r", …Run Code Online (Sandbox Code Playgroud)