仅包含少量文档的MongoDB集合出现COLLSCAN是否合理?
问题解答
你的判断基本正确,这种固定只有2条文档的极小集合场景下,COLLSCAN(全集合扫描)完全可以接受,新增查询键索引确实不会带来明显性能收益,甚至会有额外开销,具体原因如下:
- 全集合扫描的开销可以忽略:仅遍历2条文档的CPU、IO成本微乎其微,和走索引查询的性能差异在实际使用中完全感知不到,部分场景下直接遍历文档甚至比加载索引节点再定位文档的速度更快。
- 新增索引会引入无意义的额外消耗:每次调用
findAndModify更新计数器时,除了写入文档本身,还需要额外维护对应索引的元数据变更,反而会小幅提升写入延迟,同时索引还会占用额外的存储空间,完全属于不必要的投入。
唯一需要注意的例外场景:如果你的查询筛选条件包含复杂计算、全字段模糊正则等逻辑,哪怕只有2条文档也会产生额外运算开销,但这种问题也不是加索引能够解决的,需要调整查询逻辑本身。
内容的提问来源于stack exchange,提问作者zegulas
相关产品推荐
相关产品推荐

