此查询的最佳索引是什么

时间:2015-01-27 11:13:20

标签: mongodb

我有一系列预订,我以这种方式查询:

db.bookings.find({client: sessId, start: {$gte: weekStart}, end: {$lte: weekEnd}}).toArray(callback) 

startend是日期,weekStartWeekEnd也是。我不确定此查询的最佳索引。它认为它是这样的:

db.bookings.ensureIndex({client: 1, start: 1, end: -1})

或:

db.bookings.ensureIndex({client: 1, start: 1})

感谢您的帮助=)

1 个答案:

答案 0 :(得分:0)

我认为最佳状态是

db.bookings.ensureIndex({client: 1, start: 1, end: 1})

因为排序(升序或降序)无关紧要,因为搜索的次数大于或小于。您可以在两个索引上双向搜索。但是我认为如果新数据按升序排序并且新添加的日期也越来越大,那么将新数据添加到索引末尾要快一点。

最多数据集减少属性应该是第一个索引。 (如果您有很多客户并且一个客户只有一些日期,这应该是正常情况。)