我无法在Mongodb的explain查询输出中得到“nscanned”和“nscannedObjects”之间的确切区别。
在MongoDB Explain documentation上,我可以阅读:
nscanned 检查的项目数(文档或索引条目)。项目 可能是对象或索引键。如果涉及“覆盖指数”, nscanned可能高于nscannedObjects。
nscannedObjects 扫描的文档数量。
这两个领域有什么不同? 更具体的是,当我有一个使用BtreeCursor(索引)的查询时,究竟意味着什么,这两个字段有两个不同的值,例如:
{
"cursor" : "BtreeCursor a_1_b_1",
"isMultiKey" : false,
"n" : 5,
"nscannedObjects" : 5,
"nscanned" : 9,
(...)
}
我知道“covered index"是什么。 我想准确理解查询在上面的例子中做了什么。 它是否通过(“扫描”)9个元素(nscanned = 9),其中所有元素都是索引条目并且只读取(“检查”)其中5个(nscannedObjects = 5)的值以生成结果集? / p>
答案 0 :(得分:25)
这意味着:
该查询返回了5个文档 - n
扫描了索引中的9个文档 - nscanned
然后阅读集合中的5个完整文档 - nscannedObjects
类似的例子给出:
http://docs.mongodb.org/manual/reference/method/cursor.explain/#cursor.explain
答案 1 :(得分:0)
如果“光标”是索引==> nscanned =没有。索引扫描 否则,如果“光标”是FullTableScan ==> nscanned =没有。扫描文件
nscannedObjects ==>扫描的文件数量
查询时,尝试最小化所有计数,即nscanned和nscannedObjects都是最小值意味着您的查询 运行得更快!