##add_indexとは
よくマイグレーションファイルにadd_index :~
と記述があるがいまいち何でこれを書いているのか分からなかったので、調べてみた。
add_index:
とは特定のカラムからデータを取得する際に、テーブルの中の特定のカラムのデータを複製し検索が行いやすいようにする
ための記述。
多くのデータを格納するテーブルの、格納される値がそれぞれ異なるようなカラム(unique制約のかかったカラムなど)の中で、検索がよく行われるカラム に対してadd_indexの記述を張ることで検索を簡単にしたいときに使う。
##記入法
add_index :追加したいテーブル名, カラム名, 必要ならオプション名
#記入例
class CreateBookmarks < ActiveRecord::Migration[5.2]
def change
create_table :bookmarks do |t|
t.references :user, foreign_key: true, null: false
t.references :board, foreign_key: true, null: false
t.timestamps
end
add_index :users, :email, unique: true ⬅️ここ
end
end
indexのオプションとして以下のようなものがある。
オプション | 説明 |
---|---|
:name | インデックスの名前 |
:if_not_exists | カラムがすでに存在している場合は再追加を行わないように指定 |
:unique | trueを指定するとユニークなインデックス |
:length | インデックスに含まれるカラムの長さ |
▶︎その他オプションはここ |
##参考記事
deviseの add_index :users, :email, unique: true 記述について