フリーキーズ | 独学プログラミング

データベースのインデックスとは

最終更新日

データベースのインデックスとは、データ検索操作の速度を向上させるデータ構造のことです。本の巻末にある索引が、すべてのページを閲覧しなくても特定の内容を素早く探し出すのに役立つように、データベースの索引はデータベースエンジンがテーブル全体をスキャンしなくてもデータを探し出せるようにします。

インデックスの使用例

例えば、図書館にあるすべての本に関する情報を保存しているデータベースを考えてみましょう。
インデックスがなければ、特定の著者の本を見つけるためにデータベースはすべての本のレコードを1つずつ調べて、その著者の本を見つけるまで調べる必要があります。これをフルテーブルスキャンやフルスキャンと呼びます。

しかし、authorカラムにインデックスがあれば、データベースは指定された著者が書いた本を直接見つけることができます。これはテーブルの行数が多い場合、フルテーブルスキャンよりもはるかに高速です。

Author_Index:

Author_A -> Book1, Book3, Book5
Author_B -> Book2, Book4
Author_C -> Book6

Author_Aの本を検索するとき、データベースはこのインデックスを使用してAuthor_ABook1Book3Book5を書いたことを即座に見つけることができます。

インデックスの張り方

SQLでカラムにインデックスを作成するにはCREATE INDEXステートメントを使用できます。

CREATE INDEX index_name ON table_name (column_name);

インデックスの注意点

ここで重要なのは、インデックスはデータの検索を高速化する一方で、挿入、更新、削除といったデータの変更操作を遅くしてしまうということです。
データが変更されるとインデックスも更新する必要があるためです。したがって、インデックスを使用する際には読み取り効率と書き込み効率の間でバランスを取る必要があります。