单个update与多个update的效率区别
这段时间项目里遇到有这样一个rake,所以就把它分享了。
valid_hotels_ids = [1, 2, 3, ...]
这是一个需要update的hotel表的id数组。
法一:逐一update
valid_hotels_ids.each do |id| Hotel.update(id, "status = 'VALID'") end
valid_hotels_ids.each_index do |index| if index == valid_hotels_ids.length - 1 Hotel.update_all("status = 'VALID'", "id in (#{valid_hotels_ids[(index-index%500)..index].join(',')})") break#这句要加上,不然当length为500的倍数时,下面这句也会被执行,造成重复update end if (index + 1) % 500 == 0 Hotel.update_all("status = 'VALID'", "id in (#{valid_hotels_ids[index - 499..index].join(',')})") end end