find_or_create_by
- это просто запрос where
с limit 1
, и, если результат NULL
, будет запущен запрос insert
для возврата нового объекта.
Если вы правильно добавили индексирование встолбцы, тогда это будет быстрее, чем это должно быть.
Но для большой базы данных, которую вы описали, я предлагаю вам выполнять такие операции в фоновом режиме, используя sidekiq