PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Amélioration des performances des procédures stockées PostgreSQL 9.6

Dans votre cas, le nombre ne sera pas mis à jour lorsque l'utilisateur_id du produit sera modifié, donc, je recommanderai counter_cache de rails

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

Jetez également un œil à ce bijou

Remarque :- Cela ne résoudra pas votre per row insertion problème cependant

Vous devez alors écrire un compteur personnalisé, quelque chose comme suit

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

dans la console des rails

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