Задать вопрос
bogdan_uman
@bogdan_uman
шлЫмазл неукЪ-поцЪ

Оптимизация работы с БД?

Здравствуйте. Насколько верный подход отходить от взаимодействия с model и переходит на ручное формирование запросов. У меня передаются большие массивы данных, но Active Record вставляет только по одной записи и при этом постоянно при каждой вставке идет запрос на все подчиненные таблицы, поэтому место одной вставки может идти 5 Select на подчиненные таблицы и сама вставка. При больше 5000 записей уже ощутимое время задержки. Потихоньку все на ручную вставку напрямую. Насколько все это верно, и какие проблемы кроме ссылочной целостности я могу отгрести. Спасибо.
ts_data.each { | ts |
              sql_values += ",(#{ id }," +
                            "#{ children_groups[ ts[ :children_group_code ] ] }," +
                            "#{ children[ ts[ :child_code ] ] }," +
                            "#{ reasons_absences[ ts[ :reasons_absence_code ] ] }," +
                            "'#{ ts[ :date ] }'," +
                            "'#{ now }','#{ now }')"
            }

            sql = "INSERT INTO timesheet_dates ( #{ fields } ) VALUES #{ sql_values[1..-1] }"

            ActiveRecord::Base.connection.execute( sql )
end
  • Вопрос задан
  • 122 просмотра
Подписаться 1 Оценить 2 комментария
Помогут разобраться в теме Все курсы
  • Code Basics
    Ruby для начинающих
    1 месяц
    Далее
  • Skillbox
    Ruby on Rails с нуля
    10 месяцев
    Далее
  • Хекслет
    Разработчик на Ruby on Rails
    5 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Dem1
@Dem1 Куратор тега Ruby on Rails
Ruby on Rails developer
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы