MongoDB同索引键值文档查询时total keys examined为何为3而非1?
为什么MongoDB查询同键值文档时total keys examined等于文档数?
你的认知偏差在于对MongoDB BTree索引条目的理解:
- MongoDB的
{x:1}单键索引中,每个文档都会生成一条独立的索引条目,即使键值完全相同。这些条目除了包含键值5,还会附带对应文档的位置信息(比如文档的_id或磁盘存储位置),用来快速定位到具体文档。 - 相同键值的索引条目会在BTree中连续存放,但它们仍是独立的条目,并非一个键节点关联所有同值文档。
total keys examined统计的是查询过程中实际扫描到的索引条目数量,而非不同键值的数量。因为你有3个x:5的文档,对应3条索引条目,所以查询时需要扫描这3条条目来定位到每个文档,因此该值为3。
简单说:同键值的每个文档都占一条索引条目,扫描多少条条目就对应多少个匹配的文档,所以total keys examined和文档数一致。
内容的提问来源于stack exchange,提问作者ariko stephen
相关产品推荐
相关产品推荐

