У меня есть приложение Rails, работающее с Mongoid на Heroku, и мне нужно настроить некоторые индексы, чтобы сделать базу данных быстрее. Я попытался прочитать об этом несколько мест, и я знаю, что у Mongoid есть встроенные функции для индексирования, но я не уверен, что их применять и как часто индексировать.Индексирование MongoDB на Heroku, с Rails и Mongoid
Это в основном мой дизайн-модель, которую я хочу, чтобы индекс:
scope :full_member_and_show, where(full_member: true).and(show: true).desc(:created_at)
scope :not_full_member_and_show, where(full_member: false).and(show: true).desc(:created_at)
embeds_many :comments
belongs_to :designer
search_in :tags_array
attr_accessible :image, :tags, :description, :title, :featured, :project_number, :show
field :width
field :height
field :description
field :title
field :tags, type: Array
field :featured, :type => Boolean, :default => false
field :project_number, :type => Integer, :default => 0
field :show, :type => Boolean, :default => true
field :full_member, :type => Boolean, :default => false
field :first_design, :type => Boolean, :default => false
Что мне нужно индексировать, как именно я это делаю с Mongoid и как часто я должен это делать?
ERROR UPDATE
Если попытаться индексировать ниже:
index({ full_member: 1, show: 1 }, { unique: true })
Он бросает мне эту ошибку:
Invalid index specification {:full_member=>1, :show=>1}; should be either a string, symbol, or an array of arrays.
Такой приятный ответ. Только то, что я искал. Благодаря! Я делаю это, чтобы сделать мою базу данных быстрее, поэтому я должен просто сделать индекс из каждого поля, которое я запрашиваю? Будет ли это лучше всего? –
Mongo использует только один индекс для выполнения одного запроса, поэтому, если у вас есть запрос, который ссылается на 3 поля, он не будет использовать 3 отдельных индекса. Однако он может использовать составной индекс. Существуют также определенные типы запросов (например, запросы regex), которые не могут использовать индексы. В документах mongo есть куча информации о том, как монго использует индексы –
Хорошо. Было бы лучше проиндексировать первое, что мы запрашиваем для этого? В этом случае - где (full_member: true)? –