【发布时间】:2013-04-29 04:51:08
【问题描述】:
我有一个正在尝试优化的 MongoDB 查询。我创建了一个与查询中的字段匹配的索引,但我似乎无法让 MongoDB 的查询计划器在没有显式 hint() 的情况下使用该索引,即使 nscanned 和 millis 更适合提示版本。
这里是索引、查询(有和没有提示)和详细解释:
http://paste.roguecoders.com/p/4face5649612e840da04c5fea0491c9b.txt
还有一点信息:这个索引在一个大型集合中,在一个副本集中,所以我使用offline method 构建了索引。它现在存在于所有节点中。
(原贴于MongoDB-User。)
【问题讨论】:
-
如果你做了索引:
owner_1_date_-1_from_backup_1? -
我的索引是对的。我正在对
date进行排序。 (hint()证实它更好。)在我们的生产数据集上索引这个集合也需要一个多小时,所以我不愿意在没有充分理由的情况下尝试。 (-: -
这个链接可以解释为什么你会得到
scanAndOrderblog.mongolab.com/2012/06/cardinal-ins 它也可以解释为什么 MongoDb 没有看到你创建的索引是最优的 -
您使用的是哪个版本的 MongoDB?另外,您能否包含您的索引统计信息?
-
@Sammaye 它可能确实与
scanAndOrder有关。感谢您对此的提醒。我会戳它。
标签: mongodb