У меня есть таблица, и я пытаюсь добавить уникальный индекс по двум столбцам. Эти столбцы также индексируются. Итак, мой вопрос в том, могу ли я просто удалить индексы, которые были только для одного столбца, или мне нужно использовать все три индекса:
add_index "subscriptions", ["user_id"]
add_index "subscriptions", ["content_id"]
add_index "subscriptions", ["user_id"], ["content_id"], :unique => true
ruby-on-rails
activerecord
Маркус
источник
источник
used_id
иcontent_id
в отдельных индексах, если у вас также есть уникальный индекс для обоих столбцов. Это, вероятно, также относится к другим БД ... Вопреки тому, что вы ожидаете, это окажет негативное влияние на производительность (особенно на вставки / обновления).Ответы:
add_index :subscriptions, [:user_id, :content_id], unique: true
источник
%w(user_id content_id)
в Ruby просто создает массив строк, это не относится к рельсам. Вы можете сделать то же самое, с"user_id content_id".split
которым все еще создается массив строк. Я уверен, что вы это знаете, этот комментарий просто для того, чтобы другие читатели не%w(user_id content_id)
это массив строк. То же, что и['user_id', 'content_id']
. Другая нотация для массива символов%i(user_id content_id)
, или, как написала ОП,[:user_id, :content_id]