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
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ответы на вопрос 1
Dem1
@Dem1 Куратор тега Ruby on Rails
Ruby on Rails developer
Ваш ответ на вопрос

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

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