これっていつも悩みます。とりあえず全部貼っとけっていう人や
where区で使うところだけでいいなど、言う人によっても様々。
調べたら、だいたいこんな感じですかね?
indexを設定
- テーブルのデータ量が多くて、少ないレコードを検索する
- WHERE句の条件、結合の条件、ORDER BY、HAVINGなどの条件としてよく使う
- ただし毎回洗い替えのテーブルであれば索引は不要
- NULLが多いデータからNULL以外の検索(indexはNULLを含まないのでNULL以外の検索には効果的)
indexが不要
- テーブルの規模が小さいか、テーブルから大部分のレコードを検索する
- WHERE句、HAVING、ORDER BYをあまり使っていないもの
- 値が頻繁に挿入、更新、削除される
indexの設定方法
ノーマル
ALTER TABLE hoge ADD INDEX index_name(id)
マルチカラムインデックス
ALTER TABLE hoge ADD INDEX index_name(id, status)
コメント