Я бы сказал, что везде, где есть отношение belongs_to
, включая таблицы соединений, должен быть соответствующий индекс.Некоторые могут назвать это за бортом, но разница в производительности между индексированными отношениями и неиндексированными отношениями велика.
Итак, если User
has_many Books
, то ваша миграция должна иметь соответствующую строку add_index: :books, :user_id
.Если Book
has_many Authors
и Author
также has_many Books
через таблицу соединения BookAuthorings
, то в BookAuthoring
должно быть два индекса - один, охватывающий author_id
, и другой, охватывающийbook_id
.
Я бы сказал, что хорошие, надежные 90% проблем с производительностью Rails, с которыми я столкнулся, связаны с отсутствующим индексом где-то.