我尝试获取大型集合中给定字段的所有不同值(少于10个可能的值)(3.500.000文档,35gb).
我试图用a得到这些值db.collection.distinct('field')
,但它很慢,即使有一个索引(它似乎没有被使用).
有关提高此查询性能的建议吗?
谢谢
编辑
我使用的是Mongo 2.4.9.它已在2.5.5(https://jira.mongodb.org/browse/SERVER-2094)中修复,但db.logs.distinct( "version", {wsId: "XXX" })
即使两个字段都存在索引,我仍然会对此类查询产生性能问题.
"distinct"如果可用,则使用索引.像这样运行它,看看是否正在使用索引:
db.runCommand({distinct: "collectionNameGoesHere", key:"fieldNameGoesHere"})
Run Code Online (Sandbox Code Playgroud)
返回结果集中的最后一个值是如下所示的统计信息:
"stats" : {
"n" : 280,
"nscanned" : 280,
"nscannedObjects" : 0,
"timems" : 0,
"cursor" : "BtreeCursor class_id_1"
}
Run Code Online (Sandbox Code Playgroud)
请注意,我的查询在class_id字段上使用了索引,因为我已经预先制作了它.
归档时间: |
|
查看次数: |
6029 次 |
最近记录: |