在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条款?我在哪里可以阅读更多关于此的内容?
答案 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.
供参考,其他一些有用的链接如下:
这些将帮助您开始优化索引并使其适用于您的查询。