インデックス(index)
インデックス(英:index)とは、索引の意味を持つ英単語であり、データベースの表(テーブル)への検索処理を高速化させるものです。
インデックスはなぜ必要なの?
データベースは検索機能に優れているので、簡単に対象データを抽出することができます。しかし、システムによっては膨大なデータがデータベースの表(テーブル)に登録されます。
いくらデータベースが検索機能に優れているとはいえ、膨大なデータがあると速度的な問題が発生します。
例えば、次のように「名前」で検索する画面があるとします。
膨大なデータが登録されている表(テーブル)であっても「主キー」検索すれば、すぐにデータを抽出できます。しかし「主キー」以外の値で検索すると検索に時間がかかり速度的な問題が発生することがあります。
この問題を解決するのが、インデックス(index)です。
「名前」のカラムにインデックス(index)を設定することで、索引用のデータが表(テーブル)とは別に作成され、検索処理を高速にすることができます。
ただし、表(テーブル)のレコード数が少ないテーブルにインデックス(index)を設定しても、効果はあまり期待できません。あくまでも膨大なデータが登録される表(テーブル)に対して、インデックス(index)を設定することで大きな効果が期待できます。
インデックス(index)には、デメリットもあるため、どの列(カラム)にインデックス(index)を設定するのか、しっかりと検討する必要があります。
インデックスのデメリット
インデックス(index)は、索引用のデータとして表(テーブル)とは別に作成されます。
次の図は、インデックス(index)のイメージ図です。索引用のデータは表(テーブル)とは別で管理しています。
索引用のデータを別で管理することで、検索の処理を高速化しているのです。
ただし、表(テーブル)のデータを更新(登録・更新・削除)すると、インデックス側の索引用データも更新が必要です。そのため、データの追加・更新・削除時の処理速度が低下するデメリットがあります。