6

ActiveRecord でレコードを効率的に一括更新するにはどうすればよいですか? 別の列に依存する列を作成しようとしています。

これは私のコードです:

Tweet.find_in_batches do |group|
  to_be_saved = []
  group.each do |t|
    t.creation_date_posix = DateTime.strptime(t.creation_date_str, '%m/%d/%Y %H:%M').to_time.to_i
    to_be_saved << t
  end
  Tweet.transaction do
    to_be_saved.each{|t| t.save}
  end
end

しかし、それは効率を改善しません。どうやらtransactionそれを行う正しい方法ではありません。何か案は?

4

1 に答える 1

7

n一般に、一括更新を複数のSQL 書き込みステートメントに分散させるのではなく、update_allを使用してすべてを 1 つにまとめることができます。(多くの変数に応じて) これにより、全体的なパフォーマンスが向上します。

于 2012-11-08T22:41:03.727 に答える