インデックスを追加
説明
指定したテーブルにインデックスを追加
使い方
add_index(テーブル名, インデックスを付与するカラム名 [, オプション])
オプション
オプション | 説明 | データベースの種類 |
---|---|---|
:name | インデックスの名前 | 全て |
:unique | trueを指定するとユニークなインデックス | 全て |
:length | インデックスに含まれるカラムの長さ | 全て |
:order | ソート順 | MySQL |
:where | 部分インデックス | PostgreSQL、SQLite |
:using | 特定の方法のインデックス | PostgreSQL、MySQL |
:opclass | 特定の演算子クラスのインデックス | PostgreSQL |
:type | 特定のタイプのインデックス | MySQL |
:algorithm | 特定のアルゴリズムのインデックス | PostgreSQL |
:internal | 長さ制限をするか | false |
例
usersテーブルのnameカラムのインデックスを作成
add_index :users, :name
ユニークなインデックスを作成
add_index :users, [:name, :employee_id], unique: true
インデックス名をつけて作成
add_index :users, [:name, :employee_id], unique: true, name: 'by_branch_name'
インデックスの長さを10に指定して作成
add_index :users, :name, name: 'by_name', length: 10
複数のキーで長さを指定
add_index :accounts, [:name, :surname], name: 'by_name_surname', length: {name: 10, surname: 15}
ソート順でインデックスを作成
add_index :accounts, [:branch_id, :party_id, :surname], order: {branch_id: :desc, party_id: :asc}
部分インデックスの作成
add_index :accounts, [:branch_id, :party_id], unique: true, where: "active"
特定の方法でインデックスを作成
add_index :developers, :name, using: 'btree'
特定の演算子クラスでインデックスを作成
add_index :developers, :name, using: 'gist', opclass: :gist_trgm_ops
特定のタイプのインデックスを作成
add_index :developers, :name, type: :fulltext
特定のアルゴリズムでインデックスを作成
add_index :developers, :name, algorithm: :concurrently