优化查询以获得更好的性能

scr*_*ipt 2 ruby performance ruby-on-rails query-performance ruby-on-rails-4

所以我有这个功能.

假设我有数百万的帖子.

我该如何优化此功能?

def fun
  Post.all.each do |post|
    if post.user.present?
       post.active = true
    else
       post.active = false
    end
    post.save
  end
end
Run Code Online (Sandbox Code Playgroud)

就像这样做更少,具有更好的性能,因为这不是一个非常好的方法.

k00*_*0ka 5

这应该可以做到 - 而且它很快......

Post.update_all("active = (user_id IS NOT NULL)")
Run Code Online (Sandbox Code Playgroud)