gpt4 book ai didi

mongodb - COUNT_SCAN 和 IXSCAN 有什么区别?

转载 作者:行者123 更新时间:2023-12-02 09:54:36 31 4
gpt4 key购买 nike

每当我通过解释在 MongoDB 上运行计数查询时,我都可以看到两个不同的阶段 COUNT_SCAN 和 IXSCAN。我想知道它们之间的性能差异以及如何改进查询。字段已建立索引。

以下查询:

db.collection.explain(true).count({field:1}})

使用 COUNT_SCAN 并进行如下查询:

db.collection.explain(true).count({field:"$in":[1,2]})

使用 IXSCAN。

最佳答案

简而言之:COUNT_SCAN 是通过从索引读取值来获取计数的最有效方法,但只能在某些情况下执行。否则,将执行IXSCAN,然后对文档进行一些过滤并在内存中进行计数。

从辅助读取时,使用读取关注available。此关注级别不考虑分片集群中的孤立文档,因此不会执行 SHARDING_FILTER 阶段。此时您会看到 COUNT_SCAN

但是,如果我们使用读取关注local,我们需要获取文档才能执行 SHARDING_FILTER 过滤阶段。在这种情况下,有多个阶段来完成查询:IXSCAN,然后 FETCH,然后 SHARDING_FILTER

关于mongodb - COUNT_SCAN 和 IXSCAN 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49554932/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com