PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Подобряване на производителността на съхранената процедура на PostgreSQL 9.6

Във вашия случай броят няма да се актуализира, когато user_id на продукта се промени, така че ще препоръчам counter_cache на релси

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

Разгледайте и този скъпоценен камък

Забележка:- Това няма да реши вашето per row insertion проблем обаче

След това трябва да напишете персонализиран брояч, нещо като следното

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

в rails конзолата

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. Драйверът на JDBC Postgres има ли начин да зададе client_encoding за свързване към базата данни?

  2. node-postgres $1 IS NULL грешка

  3. Конвертиране на достъп в PostgreSQL?

  4. Postgres оптимизация на заявки (принудително сканиране на индекс)

  5. Клауза IN с NULL или IS NULL