PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Poprawa wydajności procedur składowanych w PostgreSQL 9.6

W twoim przypadku licznik nie zostanie zaktualizowany, gdy zmieni się identyfikator użytkownika produktu, więc polecam counter_cache szyn

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

Spójrz także na ten klejnot

Uwaga :- To nie rozwiąże problemu wstawiania per row insertion choć problem

Musisz wtedy napisać własny licznik, coś takiego jak podążanie

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

w konsoli szynowej

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tabela przestawna z 2 (lub więcej) nazwami wierszy

  2. Aby użyć innej tabeli jako kryterium WHERE w SQL

  3. PHP - Postgresql Jak mogę wycofać zapytanie, jeśli zwraca błąd?

  4. Łatwy sposób, aby zwracany typ był tabelą SETOF i dodatkowymi polami?

  5. Django. PostgreSQL. regexp_split_to_table nie działa