最終更新
データベースのインデックスとは、データ検索操作の速度を向上させるデータ構造のことです。本の巻末にある索引が、すべてのページを閲覧しなくても特定の内容を素早く探し出すのに役立つように、データベースの索引はデータベースエンジンがテーブル全体をスキャンしなくてもデータを探し出せるようにします。
HackATAは、IT技術を習得する人のために広く開かれたオンラインコミュニティです。 現在、無料コミュニティとして開放していますので、ご気軽に参加してください。
✓ 再立ち上げ
✓ コミュニティの方向性について意見募集中
例えば、図書館にあるすべての本に関する情報を保存しているデータベースを考えてみましょう。
インデックスがなければ、特定の著者の本を見つけるためにデータベースはすべての本のレコードを1つずつ調べて、その著者の本を見つけるまで調べる必要があります。これをフルテーブルスキャンやフルスキャンと呼びます。
しかし、authorカラムにインデックスがあれば、データベースは指定された著者が書いた本を直接見つけることができます。これはテーブルの行数が多い場合、フルテーブルスキャンよりもはるかに高速です。
Author_Aの本を検索するとき、データベースはこのインデックスを使用してAuthor_AがBook1、Book3、Book5を書いたことを即座に見つけることができます。
SQLでカラムにインデックスを作成するにはCREATE INDEXステートメントを使用できます。
ここで重要なのは、インデックスはデータの検索を高速化する一方で、挿入、更新、削除といったデータの変更操作を遅くしてしまうということです。
データが変更されるとインデックスも更新する必要があるためです。したがって、インデックスを使用する際には読み取り効率と書き込み効率の間でバランスを取る必要があります。