Mysqlでindexを貼るかどうかの判断

これっていつも悩みます。とりあえず全部貼っとけっていう人や

where区で使うところだけでいいなど、言う人によっても様々。

調べたら、だいたいこんな感じですかね?

indexを設定

  1. テーブルのデータ量が多くて、少ないレコードを検索する
  2. WHERE句の条件、結合の条件、ORDER BY、HAVINGなどの条件としてよく使う
  3. ただし毎回洗い替えのテーブルであれば索引は不要
  4. NULLが多いデータからNULL以外の検索(indexはNULLを含まないのでNULL以外の検索には効果的)

indexが不要

  1. テーブルの規模が小さいか、テーブルから大部分のレコードを検索する
  2. WHERE句、HAVING、ORDER BYをあまり使っていないもの
  3. 値が頻繁に挿入、更新、削除される

 

indexの設定方法

ノーマル

ALTER TABLE hoge ADD INDEX index_name(id)

マルチカラムインデックス

ALTER TABLE hoge ADD INDEX index_name(id, status)

 

コメント

タイトルとURLをコピーしました