sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL 9.6 prestandaförbättring för lagrad procedur

I ditt fall kommer antalet inte att uppdateras när användar-id för produkten ändras, så jag rekommenderar counter_cache av skenor

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

Ta också en titt på denna pärla

Obs:- Detta kommer inte att lösa din per row insertion problem dock

Du måste skriva anpassad räknare då, ungefär som att följa

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

i rälskonsol

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


  1. Orsakad av:java.time.DateTimeException:Konflikt hittades:Fält DayOfWeek 6 skiljer sig från DayOfWeek 2 härledd från 2016-01-30

  2. PHP - Azure mySQL i appen ändrade portar slumpmässigt

  3. Förhindra dubbletter av poster till en tabell med PHP

  4. Hur får jag SUM-funktionen i MySQL att returnera '0' om inga värden hittas?