sql >> Base de Datos >  >> RDS >> PostgreSQL

Mejora del rendimiento del procedimiento almacenado de PostgreSQL 9.6

En su caso, el recuento no se actualizará cuando cambie el ID de usuario del producto, por lo tanto, recomendaré counter_cache de rieles

class Product < ActiveRecord::Base
  belongs_to :user, counter_cache: true
end

También echa un vistazo a esta gema

Nota:- Esto no resolverá su per row insertion problema sin embargo

Tienes que escribir un contador personalizado entonces, algo así 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

en la consola de rieles

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