如何在WHERE和ORDER查询中在mongodb中创建索引?

时间:2013-02-11 14:52:48

标签: mongodb indexing

在mongo中,当创建索引时,我试图弄清楚以下查询是否会对a)category_ids和status,或b)category_ids,status和name有索引???

Source.where(category_ids: [1,2,3], status: Status::ACTIVE).order_by(:name) # ((Ruby/Mongoid code))

基本上,我试图弄清楚索引是否应该包含ORDER_BY列?或只有WHERE条款?我在哪里可以阅读更多关于此的内容?

1 个答案:

答案 0 :(得分:3)

是的,thius特定查询的索引将有利于查询的速度。但是,这里有一个警告,索引字段的顺序。

我注意到您在$in上使用了category_ids。此链接对于理解使用$in与排序索引(或一般事实上的排序)存在的一点复杂性特别有用:http://blog.mongolab.com/2012/06/cardinal-ins/

最后,它会为您的查询类型提供最佳索引顺序的indea:

  

索引中字段的顺序应为:

First, fields on which you will query for exact values.
Second, fields on which you will sort.
Finally, fields on which you will query for a range of values.

供参考,其他一些有用的链接如下:

这些将帮助您开始优化索引并使其适用于您的查询。