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

ユーザー履歴のおかげで、取引アプリのホームページとメールをカスタマイズできます。Rails/ postgreSQLで正しい方法でそれを行うにはどうすればよいですか?

    説明したスキーマは、テーブルに正しいインデックスを設定すれば、関心のある種類のクエリに対して非常に効率的です。データベースはリストのように動作しません。「XXXが参加した取引はどれか」という質問をしても、テーブル全体をスキャンするべきではありません。正しくインデックス付けされたテーブルは、XXXのすべての取引を見つける場所を正確に知っているからです。

    これを正しく設定するために、移行は次のようになります。

    class CreateStandardUsers < ActiveRecord::Migration
      def change
        create_table :standard_users do |t|
          t.string :name
          t.timestamps
          # More fields go here
        end
    
        add_index :standard_users, :name
      end
    end
    
    class CreateDeals < ActiveRecord::Migration
      def change
        create_table :deals do |t|
          t.references :admin_user
          # other fields go here
        end
    
        add_index :deals, :admin_user_id
        # other indices go here... anything you want to search on efficiently.
      end
    end
    
    class CreateDealParticipations < ActiveRecord::Migration
      def change
        create_table :deal_participations do |t|
          t.references :standard_user
          t.references :deal
    
          t.timestamps
        end
    
        add_index :deal_participations, :standard_user_id
        add_index :deal_participations, :deal_id
        add_index :deal_participations, :created_at
      end
    end
    

    これらの移行に属するものはまだたくさんあります(たとえば、null以外の制約、一意性の制約などを追加する必要があります)。ただし、重要なのは、これらのインデックスを使用すると、記述しているデータベース操作が非常に高速になるということです。




    1. 1つずつ実行できないcodeigniterで複数のクエリを実行する

    2. フォーラムソフトウェアは、モデレート時にトピック/投稿を文字通り削除する必要がありますか、それとも単に非表示にする必要がありますか?

    3. 1つのテーブルに値がない場合は、2つのテーブルを結合します

    4. 表で類似の番号パターンを見つける