---
title: "インデックスとは？検索を速くするデータベースの索引【基本情報技術者試験】"
description: "インデックスを「検索を速くするために表の列へ設定する索引」として整理し、FE試験で外部キー、主キー、一意制約、正規化との違いを切り分ける判断軸を解説します。"
last_modified_at: "2026-07-09"
canonical_url: "https://stemtazoo.github.io/fe/database-index/"
section: "fe"
---

## まず結論

インデックスとは、**データベースの検索を速くするために、表の列に設定する索引**です。

基本情報技術者試験では、インデックスは **データの格納位置へ効率よくアクセスし、検索速度を上げるための仕組み** と押さえると分かりやすいです。

問題文に **検索速度の向上**、**効率的なアクセス**、**索引** といった表現が出たら、インデックスを疑います。

## 直感的な説明

インデックスは、本の索引に似ています。

本の中から「スループット」という言葉を探すとき、最初のページから順番に読むと時間がかかります。

でも、巻末の索引を見れば、どのページにあるかをすぐに探せます。

```text
索引なし
→ 最初から順番に探す

索引あり
→ 目的の場所へ近道できる
```

データベースでも同じです。

検索条件によく使う列にインデックスを作ると、目的のデータがある場所へ効率よくアクセスしやすくなります。

## 定義・仕組み

関係データベースでは、表の中に多くの行が保存されています。

インデックスを設定すると、検索対象の列について、データの場所を探しやすくするための補助情報が作られます。

| 用語 | 意味 |
|---|---|
| インデックス | 検索を速くするための索引 |
| 表 | データを行と列で管理するもの |
| 列 | 検索条件に使われる項目 |
| 行 | 実際のデータ1件分 |
| 格納位置 | データが保存されている場所 |

例えば、社員表で社員番号をよく検索するなら、社員番号の列にインデックスを設定すると検索しやすくなります。

```text
社員番号で検索することが多い
↓
社員番号列にインデックスを作る
↓
該当する行を探しやすくなる
```

ただし、インデックスは万能ではありません。

インデックスを増やしすぎると、追加や更新のたびにインデックスも更新する必要があり、かえって負担になることがあります。

このテーマは、基本情報技術者試験の「データベース」や「SQL」と関係する内容です。公式の出題範囲やシラバスは、[IPA：基本情報技術者試験](https://www.ipa.go.jp/shiken/kubun/fe.html) から確認できます。

## 科目Aでどう出る？

科目Aでは、インデックスを設定する目的を選ぶ問題が出やすいです。

判断するときは、次のように見ます。

```text
検索を速くする話か
データの場所へ効率よくアクセスする話か
列の値をもとに探しやすくする話か
```

選択肢では、次のように切り分けます。

| 選択肢の方向性 | 疑う用語 |
|---|---|
| 検索速度を向上させる | インデックス |
| 別の表の主キーを参照する | 外部キー |
| 行を一意に識別する | 主キー |
| 列内の重複を禁止する | 一意制約、主キー制約 |
| データの重複を減らして更新異常を防ぐ | 正規化 |

FE試験では、インデックスの目的はまず **検索速度の向上** と考えます。

## 科目Bでどう使う？

科目Bでは、SQLやデータベース設計の問題を読むときに、インデックスの考え方が役立ちます。

例えば、次のようなSQLがあるとします。

```sql
SELECT *
FROM employees
WHERE employee_id = 'A001';
```

この場合、`employee_id` で検索しています。

この列にインデックスがあると、該当する行を探しやすくなります。

一方で、更新が多い表では注意が必要です。

```text
データを追加・更新する
↓
表のデータだけでなく
インデックス情報も更新する
```

そのため、科目Bで読むときは、次のように整理するとよいです。

```text
1. どの列でよく検索しているか
2. 検索を速くしたいのか
3. 更新や追加が多すぎないか
```

インデックスは、検索を助ける仕組みですが、設計では使いどころも大切です。

## よくある誤解・混同

インデックスでよくある誤解は、**重複を防ぐための仕組みだと思ってしまうこと**です。

| 誤解 | 正しい理解 |
|---|---|
| インデックスの主目的は重複禁止 | 主目的は検索速度の向上 |
| 外部キーと同じ | 外部キーは別表との関係を保つ列 |
| 主キーと同じ | 主キーは行を一意に識別する列 |
| 正規化と同じ | 正規化はデータの重複や更新異常を減らす設計 |
| インデックスは多いほど必ずよい | 増やしすぎると更新時の負担が増える |

特に、主キーや一意制約との違いは試験で迷いやすいです。

```text
インデックス
→ 検索を速くするための索引

主キー
→ 行を一意に識別する列

一意制約
→ 値の重複を禁止する制約
```

DBによっては一意インデックスという仕組みもありますが、FE試験で単にインデックスの目的を聞かれたら、まず検索速度の向上を選びます。

## まとめ（試験直前用）

- インデックスは、検索を速くするために表の列へ設定する索引
- 判断キーワードは「検索速度」「効率的なアクセス」「索引」
- 外部キーは、別の表との関係を保つための列
- 主キーや一意制約は、重複を防ぎ一意性を保つための仕組み
- インデックスは検索に役立つが、増やしすぎると更新時の負担が増える
