戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

ITパスポート 2018年 春期 86


問題文

DBMSにおけるインデックスに関する記述として、適切なものはどれか。

選択肢

検索を高速に行う目的で、必要に応じて設定し、利用する情報(正解)
互いに関連したり依存したりする複数の処理を一つにまとめた、一体不可分の処理単位
二つの表の間の参照整合性制約
レコードを一意に識別するためのフィールド

🔒 解説は解答すると表示されます

DBMSにおけるインデックスに関する記述【ITパスポート 解説】

正解の理由

DBMS(Database Management System:データベース管理システム)での「インデックス」は、データ検索を高速にするための仕組みです。つまり索引のような「目次」に当たります。選択肢の中で、検索を高速に行う目的で必要に応じて設定・利用する情報、という説明がこれに該当します。ここでは正しい選択肢を とします。インデックスは検索を速くしますが、その分作成や更新のコスト(追加の記憶領域と更新処理)がかかるため、必要に応じて設定します。これが、選択肢が適切な理由です。
(補足)「インデックス」は一般に B-tree(バランス木)やハッシュといったデータ構造で実装されます。英語は index で、書籍の巻末索引をイメージすると分かりやすいです。

解法ステップ

  1. 問題文のキーワード「インデックス」「DBMS」に注目する。
    • DBMS は Database Management System:データベース管理システム。
  2. 各選択肢の要点を短く読み取る。
    • 検索を高速にする → インデックスの説明っぽい。
    • 一体不可分の処理単位 → トランザクション(transaction:取引・処理のまとまり)。
    • 参照整合性制約 → 外部キー(foreign key:別の表を参照するキー)。
    • レコードを一意に識別するフィールド → 主キー(primary key:一意に識別する列)。
  3. 当てはめて、インデックスの説明に一致する選択肢を選ぶ。
このように、用語の意味を一つずつ当てはめて消去法で正解を導けます。

選択肢別の誤答解説

  • : 検索を高速に行う目的で、必要に応じて設定し、利用する情報
    • 正解です。インデックスは検索(SELECT)を速くするための追加データ構造です。更新時には維持のコストが発生します。
  • イ: 互いに関連したり依存したりする複数の処理を一つにまとめた、一体不可分の処理単位
    • これは「トランザクション(transaction:複数処理をまとめて扱う単位)」の説明です。ロールバックやコミットといった概念と結び付きます。インデックスとは異なります。
  • ウ: 二つの表の間の参照整合性制約
    • これは「参照整合性(referential integrity)」や「外部キー(foreign key:他の表を参照するキー)」に関する説明です。別表との関係性の制約であり、インデックス自体の定義ではありません。
  • エ: レコードを一意に識別するためのフィールド
    • これは「主キー(primary key:レコードを一意に識別する列)」の説明です。主キーはしばしば自動的にインデックスを作ることがありますが、主キーそのものは「識別するためのフィールド」であって、インデックスという説明とは異なります。

よくある誤解

  1. 「インデックスを作ればすべての処理が速くなる」
    • 誤りです。検索(SELECT)は速くなることが多いですが、INSERT/UPDATE/DELETEではインデックスの更新負荷が増え、処理が遅くなることがあります。利用頻度と用途を考慮して作る必要があります。
  2. 「主キーとインデックスは同じもの」
    • よく混同されますが別物です。主キーは「一意に識別する列」です。多くのDBMSでは主キーに対して自動的にインデックスが作られますが、主キーそのものはルールであり、インデックスは検索性能を上げる仕組みです。
  3. 「すべての列にインデックスを付ければ安心」
    • 無駄なインデックスはストレージを消費し、更新時のコストを増やします。頻繁に検索条件で使う列や結合に使う列を優先します。

補足コラム

  • インデックスの種類(簡単に)
    • B-tree(Balanced tree:平衡二分木)型インデックス:範囲検索や順序が重要な検索で有効。多くの汎用DBMSで標準的に使われます。
    • ハッシュ型インデックス:等価検索(=検索)に速い。ただし範囲検索には不向き。
    • クラスタ化(clustered)と非クラスタ化(non-clustered):クラスタ化はテーブルの物理的な並びをインデックスに合わせる方式で、読み取り性能に影響します(DBMSにより用語や実装は異なります)。
  • 実際のSQL例(インデックス作成)
-- 単純なインデックス作成(例)
CREATE INDEX idx_users_email ON users (email);

-- 主キーを定義すると多くのDBMSは自動でインデックスを作成する
CREATE TABLE users (
  id INT PRIMARY KEY,
  name VARCHAR(100),
  email VARCHAR(255)
);
  • 運用のポイント
    • 検索が遅いクエリを特定して、そのクエリで使う列にインデックスを検討する。
    • 更新頻度の高い列には不要なインデックスを付けない。
    • インデックスは万能ではないので、実際の性能測定(EXPLAINなど)で効果を確認する。

FAQ

Q1: どの列にインデックスを付ければよいですか?
A1: WHERE句やJOIN句、ORDER BYで頻繁に使う列を優先します。アクセス頻度と更新頻度のバランスで決めます。
Q2: インデックスは自動で作られますか?
A2: 主キーやユニーク制約を定義すると、多くのDBMSは自動でインデックスを作成します。その他は手動でCREATE INDEXします。
Q3: インデックスはどれくらい速くする?
A3: データ量やクエリの種類によります。小さなテーブルでは効果が小さいこともあります。大きなテーブルの検索では大きな効果が出ることが多いです。
Q4: 複数列にまたがる検索はどうしますか?
A4: 複合インデックス(複数列をまとめたインデックス)を使うことがあります。ただし列の順序や検索パターンに注意が必要です。

関連キーワード: DBMS、インデックス、検索高速化、主キー、外部キー、トランザクション、B-tree、ハッシュインデックス、CREATE INDEX、SQL、クエリ最適化
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

ITパスポート
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について