PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Leistungsverbesserung für gespeicherte PostgreSQL 9.6-Prozeduren

In Ihrem Fall wird die Anzahl nicht aktualisiert, wenn sich die user_id des Produkts ändert, also empfehle ich counter_cache von Schienen

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

Sehen Sie sich auch dieses Juwel an

Hinweis:- Dies löst nicht Ihre per row insertion Problem aber

Sie müssen dann einen benutzerdefinierten Zähler schreiben, etwa wie folgt

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

in der Rails-Konsole

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