1

다음 업데이트의 성능을 어떻게 향상시킬 수 있습니까?N 개 검색어 미만의 N 개의 게시물 중 "my_field"를 업데이트하는 방법은 무엇입니까?

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) 
+0

데이터베이스에서 SELECT 및 UPDATE 문을 실행해야하므로 레코드를 찾고 업데이트하는 방법은 없습니다. 아마 당신은 id [x]를 가져 와서 루프에 넣어서 코드를 반복하지 않아도 될까요? – creativetechnologist

+0

글쎄, 내가이 속도를 일부 정교한 SQL 쿼리가 있는지 궁금해 ... –

답변

1

당신은 update_all

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

편집을 사용하여 단일 SQL 쿼리와 함께 할 수 있습니다 : 이것은 하나의 문으로 작동하지 않습니다 물론 각부터 N 게시물에 대한 N Post.update_all 문장이있을 것이다 게시물은 다른 값을 가지지 만, 이후에 SQL UPDATE와 doens't가 Post 객체를 인스턴스화하기 때문에 현재는 Post.find.update_attributes보다 빠릅니다.

+0

각 ID에 대한 '가치'증가하게됩니까? –

+1

당신은 하나의 가치가있는 경우에만 작동합니다 ... – lucapette

+0

그래, 미안, 내 실수 야. – cicloon