sql >> Databáze >  >> RDS >> PostgreSQL

Zlepšení výkonu uložené procedury PostgreSQL 9.6

Ve vašem případě se počet neaktualizuje, když se změní user_id produktu, takže doporučím counter_cache kolejnic

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

Podívejte se také na tento drahokam

Poznámka:– Toto nevyřeší vaše per row insertion problém však

Pak musíte napsat vlastní počítadlo, něco jako následující

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

v konzole kolejnic

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


  1. Jak získat poslední den v měsíci v Oracle

  2. Rozdělení řetězce odděleného čárkou ve funkci PL/pgSQL

  3. Získejte pozici znaku v řetězci v SQLite pomocí Instr()

  4. Jaký je maximální počet povolených parametrů na typ poskytovatele databáze?