0

Три вопроса: Когда вы создаете модель, автоматически создается также foreign_key?Рельсы: внешние ключи и когда индексировать

Я думаю, я должен добавить_индекс, когда столбец уникален для таблицы или уникален вообще, или когда столбец будет относиться к другим базам данных, Amirite?

Как выглядит индекс? Будет ли он просто использовать содержимое ячейки?

enter image description here

ответ

3

1) Вы имеете в виду при использовании генератора? Вообще говоря, вы должны генерировать миграции, а не использовать генератор для всей модели/леса. И тогда нет, внешний ключ не создается автоматически, только если вы его укажете.

2) add_index будет пригождаться для столбцов на больших таблицах, к которым необходимо обратиться к вашей базе данных быстро. Допустим, у вас есть таблица users с столбцом email, который должен быть уникальным, но не проиндексирован. И ваш сервис растет, теперь у вас миллионы пользователей, и вам нужно пойти User.find_by_email "[email protected]". Без индекса это займет некоторое время. С индексом это будет быстро. Именно тогда вам пригодится индекс.

3) Действительно зависит от вашей базы данных afaik. Не то, что повлияет на ваше ежедневное имхо (хотя, если у вас есть определенный механизм базы данных, вы наверняка узнаете). Вот информация о MySQL прямо из источника: https://dev.mysql.com/doc/refman/5.5/en/column-indexes.html

+0

Так рельсы генерируют модель, а затем записывают миграцию, лучше практиковать? Также, я думаю, я понял это. Поэтому, когда я использую метод t.references, я создаю внешний ключ? – PudparK

+1

нет - вам не нужно генерировать модель. Создайте миграцию, напишите модель. И 'index: true' в рамках миграции будет отмечать индекс col как индекс, хотя у вас есть способы добавить индекс после факта. – ezuk

+0

Это очищает кучу. Большое спасибо! – PudparK