我的数据库中有一些记录,新记录是通过XML捆绑传入的。如果找不到相应的记录,我需要更新部分数据或创建新数据。所以我想找到在性能和数据库负载方面更新它们的最佳方法。
第一种方式:从XML逐个读取每条记录,将它们与现有记录进行比较,只更新不同的字段。
第二种方式:只需更新每条记录的所有字段。
如果有其他方式,请随时提出建议:)
答案 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,我不确定这个......