目次
-
メリット
-
デメリット
-
インデックス作成の目安
メリット
1.検索(SELECT)が速くなる
特定の行を高速で検索する事が出来ます
JOINの結合条件、WHERE、ORDER BYで指定されているカラムのカーディナリティが高い(値の種類が多い)場合に力を発揮
プライマリーキー(一意キー)の場合は最も効果的
環境によリますが、カーディナリティが高いカラムを指定してインデックスを作成し100000件のデータに検索をかけた場合、処理速度が95%ほど改善されたりします
クエリチューニングに欠かせない複合インデックスについては別記事で
https://qiita.com/okasir4444/items/4024b8152832443fae64
デメリット
1.検索以外の処理が遅くなる
更新・削除・挿入の処理が遅くなります
更新(UPDATE)・・インデックス変更のためのオーバーヘッドが加わる(更新対象カラムが含まれるインデックスのみ)
削除(DELETE)・・インデックス変更のためのオーバーヘッドが加わる(全てのインデックスが対象)
挿入(INSERT)・・更新・削除とちがい、WHERE句の処理もないのでインデックスの恩恵が受けられない&インデックス変更のためのオーバーヘッドが加わる(全てのインデックスが対象)
2.データベースの容量を圧迫する
もともとのテーブル以外にインデックスを作成するのでデータ量はおのずと増えてしまう
インデックス作成の目安
以下が大まかな目安
・絞り込んだ結果のレコード数が全体の5%以下
・レコード数が1万件以上
メリット・デメリットを意識して、効率のよいインデックスを最小限作成することが大事です