0

我们正在为我们的应用程序使用 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})

或者

如下所示创建 2 个单索引和 1 个复合索引来服务于上述查询

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 大小,查询性能)处理此问题的最佳方法是什么

4

2 回答 2

0

最好的方法是使用 .explain()

这将让您知道每个版本的索引完成了多少工作

真的值得花时间探索 explain 方法并学习解释其输出。

于 2013-10-29T17:44:49.357 回答
0

除非您有只需要使用priceand之一的查询,否则surv我认为复合索引应该做得最好。

于 2013-10-29T10:55:50.843 回答