Должен ли я добавить индекс на столбец встречного кэша в Ruby on Rails 3.0 - PullRequest
2 голосов
/ 10 марта 2011

Среда: Rails 3.0.4, MySQL, Ruby 1.8.7

У меня есть следующая таблица:

  create_table "countries", :force => true do |t|
    t.string  "iso",            :limit => 2,                 :null => false
    t.string  "name",           :limit => 80,                :null => false
    t.string  "printable_name", :limit => 80,                :null => false
    t.string  "iso3",           :limit => 3
    t.integer "numcode",        :limit => 2
    t.integer "users_count",    :default => 0
    t.integer "rank"
  end

Я регулярно ищу страны с более чем n пользователей. Имеет ли смысл добавлять индекс в кеш счетчика 'users_count'?

Я понимаю, что это добавит небольшую нагрузку для каждого добавленного пользователя, но я хочу быть уверен, что в механике встречных кешей нет чего-то еще, чего мне не хватает,

1 Ответ

4 голосов
/ 10 марта 2011

Как вы говорите, добавление индекса добавит небольшие накладные расходы для каждой записи базы данных в таблицу countries в обмен на ускорение запросов, использующих столбец.

Как правило, если толькоу вас очень большой объем записей, вероятно, стоит добавить индекс, если вы выполните какое-либо значительное количество запросов, которые ссылаются на столбец users_count в предложении where запроса.

Функциональность кэша счетчика Rails простоувеличивает значение users_count, когда пользователь создает belongs_to страну, и уменьшает его, когда пользователь уничтожается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...