PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Miglioramento delle prestazioni della stored procedure di PostgreSQL 9.6

Nel tuo caso il conteggio non si aggiornerà quando l'id_utente del prodotto viene modificato, quindi ti consiglio counter_cache di binari

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

Dai anche un'occhiata a questo gioiello

Nota:- Questo non risolverà il tuo per row insertion problema però

Devi quindi scrivere un contatore personalizzato, qualcosa come seguire

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

nella console dei binari

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