PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Melhoria no desempenho do procedimento armazenado do PostgreSQL 9.6


No seu caso, a contagem não será atualizada quando o user_id do produto for alterado, então, recomendo counter_cache de trilhos
class Product < ActiveRecord::Base
  belongs_to :user, counter_cache: true
end

Veja também esta gem

Nota:- Isso não resolverá sua per row insertion problema embora

Você tem que escrever um contador personalizado então, algo como seguir
class Product < ApplicationRecord
  has_many :products
  attr_accessor :update_count

  belongs_to :user#, counter_cache: true

  after_save do
    update_counter_cache
  end

  after_destroy do
    update_counter_cache
  end

  def update_counter_cache
    return unless update_count
    user.products_count = user.products.count
    user.save
  end
end

no console de trilhos
10.times{|n| Product.new(name: "Latest New Product #{n}", update_count: n == 9, user_id: user.id).save}