mysql - 重新计算 120k 记录的计数器缓存 [Rails/ActiveRecord]

标签 mysql ruby-on-rails activerecord

以下情况:

我有一个poi模型,里面有很多张图片(1:n)。我想重新计算 counter_cache 列,因为值不一致。

我尝试在 ruby​​ 中遍历每条记录,但这花费的时间太长,有时会因一些“段错误”错误而退出。

所以我想知道,是否可以使用原始 sql 查询来做到这一点?

最佳答案

例如,如果您有 PostPicture 模型,并且发布 has_many :pictures,您可以使用 全部更新 :

Post.update_all("pictures_count=(Select count(*) from pictures where pictures.post_id=posts.id)")

关于mysql - 重新计算 120k 记录的计数器缓存 [Rails/ActiveRecord],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2782953/

相关文章:

php - 在 php 'for' 循环/mysql 查询中去除字符

ruby-on-rails - ActiveRecord 数组计数

ruby-on-rails - 将 ActiveRecord 属性标记为 html_safe

ruby-on-rails - find_or_create_by_id 的最佳方法,但如果找到记录则更新属性

mysql - 从 MySQL 到 Postgres : Last Quarter Hour

php - 没有 LIMIT 子句的 codeigniter 事件记录获取查询和查询

mysql - 在 nodejs 中导出 var,其中包含与 MySQL 的连接的创建

ruby-on-rails - 如何完全放弃对主题分支所做的更改

ruby-on-rails - IntelliJ Ultimate 将 Ruby On Rails 检测为 JRuby

ruby-on-rails - 不支持多边形 'contains' 和其他几何操作