
【インデックス(読み方:いんでっくす)】って、図書館で目的の本を探す時に使う「索引」と似ています。大量の本の中から、キーワードを使って素早く目的の本を見つけ出すための仕組みですよね。データベースでも同じように、大量のデータの中から特定のデータを高速に見つけ出すために、インデックスという仕組みが使われます。
💡 面接でのベスト回答
想定質問:「インデックスについて教えてください」
面接官:インデックスについて説明してください。
私:インデックスとは、データベーステーブルの特定のカラム(列)に対して作成される、データの場所を高速に検索するためのデータ構造です。
例えるなら、電話帳で名前から電話番号を引くようなものです。
以前のプロジェクトで、顧客データベースの検索速度が遅く、レスポンスタイムが許容範囲を超えていました。
原因を調査した結果、顧客ID、氏名、電話番号といった主要な検索条件に使用されるカラムにインデックスが設定されていなかったためだと判明しました。
そこで、これらのカラムに対して適切なインデックスを作成したところ、検索速度が大幅に向上し、レスポンスタイムを目標値内に収めることができました。
具体的には、以前は10秒以上かかっていた検索処理が、0.5秒以下に短縮されました。
現役エンジニアによる深掘り解説
メリット
検索速度の向上: インデックスを使用することで、データベースはテーブル全体をスキャンする必要がなくなり、特定のデータを高速に見つけることができます。
クエリパフォーマンスの改善: 特に大規模なデータベースにおいて、複雑なクエリの実行速度を大幅に改善できます。
デメリット
ストレージ容量の消費: インデックスは、元のデータとは別にストレージ容量を消費します。テーブルのサイズが大きくなると、インデックスのサイズも大きくなり、ストレージ容量を圧迫する可能性があります。
書き込み速度の低下: データが挿入、更新、または削除されるたびに、インデックスも更新する必要があるため、書き込み操作の速度が低下する可能性があります。
メンテナンスコストの増加: インデックスは、定期的なメンテナンス(再構築、最適化など)が必要になる場合があります。
⚠️ 面接突破のワンポイント
- 適切なインデックスの選定理由を説明できるように準備しましょう。どのようなデータ特性に対して、どのような種類のインデックスが効果的なのかを理解しているか問われることがあります。(例:複合インデックス、クラスタインデックス、非クラスタインデックス)
- インデックスの張りすぎがパフォーマンスに悪影響を及ぼす可能性について理解していることをアピールしましょう。適切なバランス感覚を持っていることを示しましょう。


