インデックスとは(全体像)
インデックスとは、データベースの検索を速くするための「索引」のことだ。
本でたとえると分かりやすい。本の巻末にある「索引(さくいん)」を思い浮かべよう。索引があると、目的の言葉が何ページにあるか、すぐ分かる。インデックスも同じで、データベースの中から、目的のデータをすばやく見つけられる。
代表的なのは、B-Tree(ビーツリー)インデックスで、範囲を指定した検索にも強い。
ここで一番のポイント。インデックスは、検索を速くする。索引がなければ、最初から1つずつ探すことになるが、索引があれば、ずっと速く見つけられる。
詳しく:効果とコスト
ここが心臓部。ポイントを表で押さえよう。
インデックスのポイント
| 項目 | やさしい意味 |
|---|---|
| 正体 | 検索を速くするための索引(本の巻末索引のよう) |
| 効果 | 目的のデータをすばやく見つけられる(検索が速い) |
| コスト | 作るのに手間・容量、更新のたびに索引も直す負担 |
| 使い方 | 全列ではなく、よく検索する列に絞って作る |
インデックスは便利だが、いいことばかりではない。ここで一番のポイント。インデックスには、コスト(負担)がある。索引を作るのに時間と容量がかかり、データを更新するたびに、索引も直す必要がある(更新の負担)。「インデックスは万能で、たくさん作るほど良い」と思い込むと誤りになる。
だから、全部の列に作るのではなく、よく検索する列に絞って作るのが基本だ。
わかりやすく言い換えると
身近なたとえで整理しよう。
インデックスは、「本の巻末索引。目的の言葉をすぐ見つけられる」イメージ。データベースの検索を速くする。
「コストがある」というのは、索引を作る手間がかかり、内容が変わると索引も直す必要があること。要するに、便利だが、ただではない。
「列に絞る」というのは、全部の列ではなく、よく検索する列だけに作ること。つまり、必要なところに絞って使う。
試験のツボ
🔴 一番出る:インデックスの正体
①データベースの検索を速くするための索引
②本の巻末索引のように、目的のデータをすばやく見つける
🔴 次に出る:効果
①検索が速くなる(索引がないより、ずっと速い)
②代表はB-Treeインデックス(範囲検索にも強い)
🟡 押さえると安定:コストと使い方
①作成・更新の負担がある(万能ではない)
②全列ではなく、よく検索する列に絞って作る
よくある間違い
①「インデックスは万能で、たくさん作るほど良い」→ ✗ 作成・更新の負担がある。よく検索する列に絞って作るのが基本。
②「インデックスは、すべての列に作るのがよい」→ ✗ 全列ではなく、よく検索する列に絞って作る。
③「インデックスは、データベースの検索を遅くするものだ」→ ✗ 逆で、インデックスは検索を速くするための索引。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(インデックスの正体)
インデックスに関する次の記述のうち、最も適切なものはどれか。
- データベースにおける検索を速くするための、索引のことである
- 社員の出退勤を記録して、毎月の給与を計算するためのしくみだ
- 取引先へ毎月の請求書を郵送する、決まった事務作業のことを指す
- 完成したシステムを宣伝して、より多く売るための広告活動である
解答は 1 です。
インデックスは、データベースの検索を速くするための、索引なのです。本の巻末索引のイメージなります。
選択肢2は給与計算、選択肢3は請求書の事務、選択肢4は広告で、どれも違うのです。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | 検索を速くするための索引で正しい |
| 2 | ✗ | 給与計算のしくみではない |
| 3 | ✗ | 請求書の事務の話 |
| 4 | ✗ | 広告活動ではない |
オリジナル問題2(効果)
インデックスの効果に関する次の記述のうち、最も適切なものはどれか。
- 社員の給与を計算するときだけ、効果が出るとされているものである
- 取引先への請求書の枚数しだいで、効果が決まるとされているのだ
- 目的のデータをすばやく見つけられるので、検索が速くなるのである
- データベースの検索を、わざと遅くするものだとされているのである
解答は 3 です。
インデックスは、目的のデータをすばやく見つけられ、検索が速くなるのです。索引がないより、ずっと速いなります。
選択肢1の給与、選択肢2の請求書、選択肢4の「わざと遅くする」は、いずれも違うのです。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 給与計算で効果が出るのではない |
| 2 | ✗ | 請求書の枚数で決まるのではない |
| 3 | ✓ | すばやく見つけ検索が速くなるで正しい |
| 4 | ✗ | 検索を速くするもの |
オリジナル問題3(コストと使い方)
インデックスのコストに関する次の記述のうち、最も適切なものはどれか。
- 社員の給与を計算するときだけ、コストがかかるとされているものだ
- 作成・更新の負担があり、よく検索する列に限定して作るものである
- 取引先への請求書の枚数しだいで、コストが決まるとされているのだ
- コストはいっさいなく、すべての列に作るのがよいとされているのだ
解答は 2 です。
インデックスは、作成・更新の負担があり、よく検索する列に絞って作るのです。万能ではないので、必要なところに絞るなります。
選択肢1の給与、選択肢3の請求書、選択肢4の「すべての列に作る」は、いずれも違うのです。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 給与計算でコストがかかるのではない |
| 2 | ✓ | 負担があり列に絞って作るで正しい |
| 3 | ✗ | 請求書の枚数で決まるのではない |
| 4 | ✗ | コストがあり、全列には作らない |
まとめ
押さえどころ
- 🔴 インデックス = データベースの検索を速くするための索引(本の巻末索引のようなもの)。
- 🔴 効果 = 目的のデータをすばやく見つけられ、検索が速くなる(代表はB-Tree)。
- 🟡 コストと使い方 = 作成・更新の負担があり、万能ではない。全列ではなく、よく検索する列に絞って作る。
次に学ぶ
執筆: SikakuQuest編集部