mysql - 将父模型属性复制到 mysql 或 Rails 中具有相同属性的所有子模型作为单个查询

标签 mysql ruby-on-rails

我知道在 Rails 的情况下我们需要使用以下 sudo 代码

Parent.all.each do |parent|
    parent.childrens.update_all(:price => parent.price)
end

但我有大约 500 万条家长记录,我知道这会花费很多时间。

是否有一种简单的方法可以通过 Rails 或 MySQL 以最快的方式(在单个查询中)完成上述操作

最佳答案

Parent.includes(:childrens).find_in_batches.find_in_batches do |group|
  sleep(50)
  group.each { |parent| parent.childrens.update_all(price: parent.price) }
end

这至少是你能想到的最好的rails..它也会避免n+1,因为记录很大,find_in_batches会帮助你,否则你的 db/dyno 可能会被锁定..

关于mysql - 将父模型属性复制到 mysql 或 Rails 中具有相同属性的所有子模型作为单个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44645674/

相关文章:

ruby-on-rails - 使用 rbenv 和多个项目随着时间的推移维护 gems

php - 显示比较 <select> 中两个表的现有和不存在的 ID

ruby-on-rails - Group_by - Ruby/Rails + Postgres

ruby-on-rails - 为什么 "install"运行两次?

ruby-on-rails - Capistrano 3 使用登录 shell

ruby-on-rails - 如何允许用户嵌入 YouTube 和 Vimeo 视频?

c# - 工作台的连接表和链接表之间有区别还是相同?

php - 如何自动发送电子邮件

PHP MYSQL文件内容转义问题

mysql - 消除 MySQL 表上迟来的数据操作的可能性