2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

indexの仕組み

Posted at

MySQL のインデックスの使用の仕組み

インデックスは特定のカラム値のある行をすばやく見つけるために使用されます。インデックスがないと、MySQL は関連する行を見つけるために、先頭行から始めてテーブル全体を読み取る必要があります。テーブルが大きいほど、このコストが大きくなります。テーブルに問題のカラムのインデックスが含まれている場合、MySQL はすべてのデータを調べる必要なく、データファイルの途中のシークする位置をすばやく特定できます。これはすべての行を順次読み取るよりはるかに高速です。

indexを貼る

rails generate migration add_index_テーブル名_カラム名をし、migrationファイルを作成します。

作成されたmigrationファイルの中身はこんな感じです。

class AddIndexToテーブル名 < ActiveRecord::Migration
  def change
    add_index :テーブル名, カラム名
  end
end

indexに複数のカラムを設定する場合は

add_index テーブル名, [:カラム名1, :カラム名2, ・・・]

と書けばオーケーです。

オプション
:name - インデックスの名前
:unique - trueを指定するとユニークなインデックス
:length - インデックスに含まれるカラムの長さ

参考
データベースにindexを張る方法
https://qiita.com/seiya1121/items/fb074d727c6f40a55f22

mysql公式リファレンス
https://dev.mysql.com/doc/refman/5.6/ja/mysql-indexes.html
公式リファレンスほんとに優秀...

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?