データベースのインデックスについて

はじめに

テーブルを作成するときにいろいろなオプションを設定できるので、いろいろ調べた。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

参考