1

次の更新プログラムのパフォーマンスを改善するにはどうすればよいですか?

Post.find(id1).update_attributes(:my_field => value1)
Post.find(id2).update_attributes(:my_field => value2)
Post.find(id3).update_attributes(:my_field => value3)
        ...                               ...
Post.find(idN).update_attributes(:my_field => valueN)
4

1 に答える 1

1

update_allを使用して単一の SQL クエリで実行できます

Post.update_all("field = 'value'", "id IN (id1, id2...)")

編集:これは単一のステートメントでは機能しません。もちろんPost.update_all、各投稿には異なる値があるため、N の投稿に対して N の文がありますが、SQL UPDATE を作成し、Post オブジェクトをインスタンス化しないため、現在よりも高速ですPost.find.update_attributes

于 2011-08-30T12:02:06.833 に答える