データベースのインデックスについて
はじめに
テーブルを作成するときにいろいろなオプションを設定できるので、いろいろ調べた。null: false
とかは理解しやすかったけどindex(インデックス)が理解に時間がかかったので調べたものを書きます。
index
indexとは
indexとは、特定のカラムからデータを取得する際にテーブルの中の特定のカラムのデータを複製し検索が行いやすいようにしたもの。
indexのメリット
- データの読み込み・取得が早くなる。
indexのデメリット
- 書き込みの速度が倍かかる。
indexの使いどころ
indexを貼り、カラムを検索しやすいように整理しデータの読み込み・取得が早くなる反面、そのカラムのデータを複製する処理が走るので、書き込みの速度に倍かかる。かつ、たいしたデータ量のやアクセスのないカラムに張っても、大した速度改善は見込めない。そのため、基本的にindexはある程度多くのデータを格納するテーブルの、格納される値がそれぞれ異なるようなカラムの中で、検索がよく行われるカラムに対して張ると効果的。
indexの張り方
テーブルの作成時に貼る場合
indexとtrueにするだけ。
class Createテーブル名 < ActiveRecord::Migration def change create_table :テーブル名 do |t| t.型 :カラム名, index: true end end end
後からマイグレーションファイルを作成して貼る場合
rails generate migration add_index_テーブル名_カラム名
コマンドを実行してmigrationファイルを作成する。
class AddIndexToテーブル名 < ActiveRecord::Migration def change add_index :テーブル名, カラム名 end end
参考
- データベースにindexを張る方法 ほとんどこの記事でおっしゃってくれてます。。