私のユーザーテーブルには約100万件のレコードがあります。
私のRegionテーブルにはおそらく200レコードがあります。
私がすべきですadd_index :users, :region_id
か?
また、リージョンにuser_idがある逆の場合は、リージョンテーブルでuser_idにインデックスを付ける必要がありますか?
私のユーザーテーブルには約100万件のレコードがあります。
私のRegionテーブルにはおそらく200レコードがあります。
私がすべきですadd_index :users, :region_id
か?
また、リージョンにuser_idがある逆の場合は、リージョンテーブルでuser_idにインデックスを付ける必要がありますか?
「時期尚早の最適化はすべての悪の根源です」。アプリケーションのプロファイリングでインデックスが必要であることが示された場合にのみ、インデックスを追加してください。
はい、追加する必要があります。あなたが考えるなら、あなたはそれらのフィールドの条件を得たたくさんのクエリを持っているでしょう。あなたの場合、1つの地域に住む人々のようなクエリがたくさんあると思うので、usersテーブルに(id(user_id)フィールドとregion_idフィールドを1つのインデックスにまとめて)のインデックスを作成します。
add_index :users, [:id, :user_id]