索引在这种情况下如何帮助mongo db?

时间:2015-06-17 13:29:35

标签: mongodb

我们说我有一个具有这种结构的集合,

  

student_id数据,得分,score_type

我有分数索引,我想查询id = 10000的学生的分数,并按分数排序。

我在我的数据集上运行查询,这就是查询计划,

  

1:首先,db使用分数索引对文档进行排序   2:然后它对ID为1000的文档进行过滤

即使我们在这里使用索引,这里也会检查所有文档以进行匹配(因为student_id上没有索引)。我的问题是,如果要检查所有文件,为什么数据库不考虑这个备用计划

  

1:进行集合搜索并进行过滤   2:然后使用分数索引进行排序。

这里将对较小的数据集进行排序,因此它应该更快。

第二个计划有什么问题?

1 个答案:

答案 0 :(得分:1)

每个查询只能使用一个索引。

因此,如果要查询密钥并对另一个密钥进行排序,则需要一个多密钥索引:

db.collection.ensureIndex({student_id:1,score:1})
db.collection.find({student_id: 1000}).sort({score:1})