MongoDB:包含' _id'的复合索引是否有任何优势?

时间:2015-02-25 08:05:17

标签: mongodb indexing

查询如下所示:

db.myCollection.find({_id: {$in: [...]}, isActive: true})

_id是常规ObjectIdisActive是分配给每个文档的bool。

使用像{_id: 1, isActive: 1}这样的索引有什么性能优势吗?一方面,_id是一个唯一的字段,已经编入索引,因此任何额外的索引都是多余的。另一方面,Mongo可能会通过仅检查索引来抛出不匹配的文档(即isActive = false),但可能会有轻微的收获。

1 个答案:

答案 0 :(得分:2)

我认为使用复合索引是个好主意。但是,由于isActive字段只能有两个值,因此更好的索引是

{isActive: 1, _id: 1}

这将确保在下一步中只处理那些处于活动状态的对象。