インデックスは本の目次のようなもの!
データベースを使うと必要な情報を検索するのに非常に便利ですが、膨大な量のデータを一度に処理しようとすると検索結果が出るまでの時間(性能)の低下を引き起こします。
そのためにDBMSは、インデックスという索引のようなものを使ってデータの検索を高速化する機能を持っています。
インデックスは索引のことで、どのデータがどこにあるかを示した一覧表です。良く例えられるのが本の目次です。
本の中の見たいページを探すときに、最初の1ページ目から1枚ずつめくって調べていくのでは無く、目次から対象ページを見つける(絞り込む)ことで目的のページに効率よく辿り着くことができます。インデックスものこれとおなじようなものなので、インデックスを使うことで素早く必要なデータにアクセスできることになります。
インデックスを使うメリット、デメリット
インデックスにはデータを引き出す速度を高めるメリットがありますが、実はデメリットもあります。
インデックスはデータベース上の実際の表(テーブル)とは別のデータとして保持するため、表の内容が更新されるとインデックス側のデータ更新も必要になります。そのため、データの追加・更新・削除時の処理速度全体としては低下してしまいます。
また、そもそも表にあるレコード数(データ数)が少ない場合やカラム(列)の値の種類が少ない(例えば、男と女の2値しかないなど)場合には速度向上が期待できないので、上記の更新時の速度低下のデメリット分、損してしまいます。
そのため、インデックスを設定する列は何でもかんでも候補にするのではなく、効果が期待できる列に対して実施するなどの検討を十分に行った上で、インデックスの設定をすることが重要になります。
まとめ
今回はデータベースのインデックスに関して学んでみました。
インデックスを使うことで検索速度の向上が期待できますが、デメリットもあるため、何でもインデックスを作れば良いのではなく、効果が期待できるカラム(列)に対して実施するための検討が必要なのですね。
以上です!