浏览代码

Do not use WHERE NOT IN in CopyStatusStats migration (#8281)

Fix #8275

As the batch operation progresses, the statuses_stats table grows,
and the WHERE NOT IN subquery becomes more expensive
master
Eugen Rochko 5 年前
committed by GitHub
父节点
当前提交
f13afa1ee9
找不到此签名对应的密钥 GPG 密钥 ID: 4AEE18F83AFDEB23
共有 1 个文件被更改,包括 1 次插入1 次删除
  1. +1
    -1
      db/migrate/20180812173710_copy_status_stats.rb

+ 1
- 1
db/migrate/20180812173710_copy_status_stats.rb 查看文件

@@ -3,7 +3,7 @@ class CopyStatusStats < ActiveRecord::Migration[5.2]

def up
safety_assured do
Status.where.not(id: StatusStat.select('status_id')).select('id').find_in_batches do |statuses|
Status.unscoped.select('id').find_in_batches(batch_size: 5_000) do |statuses|
execute <<-SQL.squish
INSERT INTO status_stats (status_id, reblogs_count, favourites_count, created_at, updated_at)
SELECT id, reblogs_count, favourites_count, created_at, updated_at


正在加载...
取消
保存