MongoDB, похоже, использует неэффективный шаблон запроса, когда один индекс является подмножеством другого индекса.
class Model
field :status, :type => Integer
field :title, :type => String
field :subtitle, :type => String
field :rating, :type => Float
index([
[:status, Mongo::ASCENDING],
[:title, Mongo::ASCENDING],
[:subtitle, Mongo::ASCENDING],
[:rating, Mongo::DESCENDING]
])
index([
[:status, Mongo::ASCENDING],
[:title, Mongo::ASCENDING],
[:rating, Mongo::DESCENDING]
])
end
Первый индекс используется как при запросах status
, title
и subtitle
, так и при сортировке rating
, а также при запросах только status
и title
и при сортировке rating
использование explain()
вместе с hint()
в консоли javascript гласит, что использование второго индекса происходит в 4 раза быстрее.
Как я могу сказать Mongoid, чтобы он велел MongoDB использовать второй индекс?