我们正在使用Mongodb作为我们的应用程序 我有一个关于在集合上创建索引的查询。
首先,下面是我的查询,它将对数据库进行查找并返回数据
db.mycollection.find({ symbol: "UGHNG", date: "2013-11-08", mainsymbol: "HIJ" }).sort( { "price": 1,"surv": 1} ).pretty()
从上面的查询可以看出,有两个字段price和surv,仅用于排序目的。
为上述
创建索引的最佳方法是什么创建一个复合索引,其中包含上述查询的每个字段。
db.mycollection.ensureIndex({"symbol":1,"date":1,"mainsymbol":1,"price":1,"surv":1},{"unique" : false})
OR
创建2个单个索引和一个compund索引,如下所示,以提供上述查询
db.mycollection.ensureIndex({"price" : 1}, {"unique" : false})
db.mycollection.ensureIndex({"surv" : 1}, {"unique" : true})
db.mycollection.ensureIndex({"symbol":1,"date":1,"mainsymbol":1},{"unique" : false})
请分享您的观点,因为在各方面处理此问题的最佳方法是什么(RAM大小,查询性能)
答案 0 :(得分:0)
除非您的查询只需要使用price
和surv
中的一个,否则我认为复合索引应该做得最好。
答案 1 :(得分:0)
最好的方法是使用.explain()
这将让您知道索引的每个版本完成了多少工作
真的值得花时间探索解释方法并学会解释它的输出。