什么更好[阅读,检查,写]每个或只是[写]一切?

时间:2014-11-28 14:25:27

标签: mysql ruby-on-rails

我的数据库中有一些记录,新记录是通过XML捆绑传入的。如果找不到相应的记录,我需要更新部分数据或创建新数据。所以我想找到在性能和数据库负载方面更新它们的最佳方法。

第一种方式:从XML逐个读取每条记录,将它们与现有记录进行比较,只更新不同的字段。

第二种方式:只需更新每条记录的所有字段。

如果有其他方式,请随时提出建议:)

1 个答案:

答案 0 :(得分:0)

即使您运行直接update,由于验证和其他内容,rails会生成read/check/update。 因为插件必须一次完成,如果你真的想要提高数据库负载,你至少可以加载所有记录一次。

records = Model.where(id: list_of_ids)
xml_list.each do |xml_model|
  record = records.select {|r| r.id == xml_model.id}
  #do_stuff unless record.nil?
end

其中list_of_ids是一个id数组。 这样,您在内存而不是数据库中移动重复搜索。 如果ID过多,请查看find_each

records = Model.find_each

但你应该能够通过id搜索你的xml_list,我不确定这个......