【问题标题】:explain() in Mongodb: differences between "nscanned" and "nscannedObjects"Mongodb 中的 explain():“nscanned”和“nscannedObjects”之间的区别
【发布时间】:2012-12-04 07:25:03
【问题描述】:

我无法在 Mongodb 的解释查询输出中得到“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"”是什么。 我想确切地了解查询在上面的示例中做了什么。 它是否通过 ("scanned") 9 个元素 (nscanned = 9),其中所有元素都是索引条目并读取("examined")其中只有 5 个元素 (nscannedObjects = 5) 的值以生成结果集?

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    这意味着:
    查询返回 5 个文档 - n
    从索引中扫描了 9 个文档 - nscanned
    然后从集合中读取 5 个完整文档 - nscannedObjects

    类似的例子在:
    http://docs.mongodb.org/manual/reference/method/cursor.explain/#cursor.explain

    【讨论】:

      【解决方案2】:

      如果“光标”是索引 ==> nscanned = 否。扫描的索引 否则,如果“光标”是 FullTableScan ==> nscanned = no。扫描文件数

      nscannedObjects ==> 扫描的文档数

      查询时,尽量减少所有计数,即 nscanned 和 nscannedObjects 都是最小值,这意味着您的查询应该运行得更快!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-02
        • 1970-01-01
        • 2019-01-30
        • 1970-01-01
        • 2019-08-06
        • 1970-01-01
        • 2017-01-31
        相关资源
        最近更新 更多