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

Railsのテーブルにどのインデックスを追加するか

    この列での並べ替えの検索が高速化されるため、より良いでしょう。そして、外部キーはよく検索されるものです。

    Railsのバージョン5は自動的に作成されるため、詳細については、こちら

    いいえ、これはすでにRailsによって行われています

    いいえ、上記と同じです

    その場合、インデックスは2つの列を組み合わせたインデックスになります。 1つのcategory_idのすべてのエントリが必要な場合を除いて、これは意味がありません。 そして 1つのstate_idcategory_idである必要があります categoryではありません )同時に。

    このようなインデックスを使用すると、次のリクエストが高速化されます。

    # rails 2
    User.find(:all, :conditions => { :state_id => some_id, :category_id => some_other_id })
    
    # rails 3
    User.where(:state_id => some_id, :category_id => some_other_id)
    

    どこ

    add_index :users, :category_id
    add_index :users, :state_id
    

    これらのリクエストをスピードアップします:

    # rails 2+3
    User.find_by_category_id(some_id)
    User.find_by_state_id(some_other_id)
    
    # or
    # rails 2
    User.find(:all, :conditions => {:category_id => some_id})
    User.find(:all, :conditions => {:state_id => some_other_id})
    
    # rails 3
    User.where(:category_id => some_id)
    User.where(:state_id => some_other_id)
    

    いいえ、これを行うと、1つのカテゴリに入ることができるのは1人のユーザーだけですが、カテゴリの意味は、より多くの多くを入れることができるということです。 ユーザーを1つのカテゴリに分類します。 User 次のようなモデルがありますbelongs_to :category カテゴリモデルでは、has_many :usersのようなものがあります 。 has_manyがある場合 関係foreign_key フィールドは一意であってはなりません!

    これに関する詳細については、tadman をご覧ください。 素晴らしい回答 。



    1. MariaDBでのFLOOR()のしくみ

    2. SQL Server全文検索(FTS)でストップリストの使用をマスターする

    3. /etc/mysql/my.cnfの変更後にMySQLコンテナがクラッシュします。編集し直す方法は?

    4. Oracleは更新動作を選択します