关于mongodb索引
我有一个关于mongodb索引的问题。 假设我们有两个模型:关于mongodb索引,mongodb,mongoid,mongodb-indexes,Mongodb,Mongoid,Mongodb Indexes,我有一个关于mongodb索引的问题。 假设我们有两个模型: class Book include Mongoid::Document field :user_id field :borrower_id belongs_to :user end class User include Mongoid::Document has_many :books end 问题: 如果我找不到一些书: current_user.books.roder_by(:created_a
class Book
include Mongoid::Document
field :user_id
field :borrower_id
belongs_to :user
end
class User
include Mongoid::Document
has_many :books
end
问题:
如果我找不到一些书:
current_user.books.roder_by(:created_at.desc)
我应该为这本书创建哪个索引
index({user_id: 1, created_at: -1})
或
为什么呢?我会选择复合索引,因为MongoDB(新)索引交叉中存在许多限制,这意味着两个索引不能单独用于查询的查找和排序:因此,在这种情况下,两个单独的索引不是回答查询的最佳索引,只会使用一个索引,最有可能的是,它将是一个内存排序限制为32MB的RAM
值得注意的是,ndex交叉始终是最后的手段。只有在无法高效地创建复合索引来覆盖查询时,才应该这样做,因为交叉操作一开始就非常昂贵。复合索引,因为MongoDB无法使用索引intersectionijng进行排序和查找,因此后两个索引将是回答查询的最佳选择。当然,不管怎样,指数互换都是次优的
index({user_id: 1})
index({created_at: -1)