sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQL9.6ストアドプロシージャのパフォーマンスの向上

    あなたの場合、製品のuser_idが変更されてもカウントは更新されないので、 counter_cache レールの

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

    このgem もご覧ください。

    注:-これは行ごとの挿入を解決しません しかし問題

    次に、次のようなカスタムカウンターを作成する必要があります

    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. カウント数によるSQLグループ

    2. PDO::fetchAllとPDO::fetchのループ

    3. Ubuntu16.10でPostgreSQLを9.6から10.0にアップグレードします

    4. OracleエラーORA-01790を解決する方法は?