ITパスポート 2025年 問65
問題文
DBMSにおいて、データの検索を高速に行う目的で、必要に応じて設定して利用する情報はどれか。
選択肢
ア:インデックス(正解)
イ:外部キー
ウ:主キー
エ:スキーマ
🔒 解説は解答すると表示されます
DBMSにおいて、データの検索を高速に行う目的で、必要に応じて設定して利用する情報はどれか。【ITパスポート 解説】
正解の理由
この問題で選ぶべきは ア の「インデックス」です。
インデックスは、データベース(DBMS:Database Management System、データを格納・管理するソフトウェア)において、検索を速くするために追加で作るデータの目次のような情報です。図書館で言えば、辞書や索引と同じ役割で、目的のページ(レコード)を直接たどれるようにします。必要に応じて作成・削除でき、検索(クエリ:データを取り出す要求)を高速化する目的で使う点が設問の条件と一致します。
インデックスは、データベース(DBMS:Database Management System、データを格納・管理するソフトウェア)において、検索を速くするために追加で作るデータの目次のような情報です。図書館で言えば、辞書や索引と同じ役割で、目的のページ(レコード)を直接たどれるようにします。必要に応じて作成・削除でき、検索(クエリ:データを取り出す要求)を高速化する目的で使う点が設問の条件と一致します。
解法ステップ
- 問題文のキーワードを確認する:検索を「高速に行う目的」で、「必要に応じて設定して利用する情報」
- 選択肢の意味を短く確認する:
- インデックス:検索を速くするための補助構造。
- 外部キー:テーブル同士の関連を保つための値。
- 主キー:各行を一意に識別する値。
- スキーマ:データベースの構造定義(設計図)。
- 「検索高速化」「必要に応じて設定」という条件に合うものを選ぶ → インデックス(ア)。
選択肢別の誤答解説
- ア: インデックス
- 説明:インデックス(index:索引)は、特定の列の値と実際のデータ位置を結び付けたデータ構造です。これにより、全件を順に調べる(フルスキャン)ことなく高速に該当レコードへアクセスできます。必要に応じて作成・削除できるため、設問と一致します。
- イ: 外部キー
- 説明:外部キー(foreign key:他のテーブルの主キーを参照する列)は、テーブル間の関連性(整合性)を保つために使います。検索速度を直接速くするためのものではありません。
- ウ: 主キー
- 説明:主キー(primary key:各行を一意に識別する列)はデータの重複を防ぎ、一意性を保証します。主キーの列に自動的にインデックスが張られることが多いですが、主キー自体は「データを識別するための値」であり、設問の「必要に応じて設定して利用する情報(検索高速化)」という表現とはニュアンスが違います。
- エ: スキーマ
- 説明:スキーマ(schema:データベースの構造定義)は、テーブルや列の設計図です。データの構造や制約を定義しますが、検索を直接高速化する設定ではありません。
よくある誤解
- 「主キーがあればインデックスは不要」
- 実際には多くのDBMSで主キーに対して自動的にインデックスが作られますが、検索を速くしたい他の列(例:検索条件に頻出する列)には別途インデックスを張る必要があります。
- 「インデックスは常に良い」
- インデックスは検索を速くしますが、データの追加・更新・削除(書き込み)時に更新コストが増えます。用途に応じて作ることが重要です。
- 「インデックスはデータ本体のコピー」
- インデックスは一種の参照構造で、列の値とデータ位置を保持します。全データを丸ごとコピーするわけではありませんが、ストレージ(保存領域)は増えます。
補足コラム
- インデックスの内部構造として一般的なのはB-tree(B木)やハッシュです。
- B-tree型は範囲検索(例:日付の範囲)に強いです。
- ハッシュ型は等価検索(=の検索)に高速ですが範囲検索には向きません。
- 実務での使い方の例:検索条件によく使う列、結合(JOIN)で結び付ける列、ORDER BYやGROUP BYで使う列にインデックスを検討します。ただし、更新頻度が高い列には控えめにします。
- 例え:商品カタログで「商品名で検索する」操作が多ければ、商品名列にインデックスを作ると検索が速くなります。ただし、商品の説明文を頻繁に更新するならインデックスの数は最小限にします。
FAQ
Q1: インデックスを作れば必ず検索が速くなりますか?
A1: ほとんどの場合は速くなりますが、クエリやデータ量、インデックスの種類によります。小さなテーブルではインデックスが意味をなさないこともあります。また、複雑なクエリや非適切なインデックスでは逆に遅くなる場合があります。
A1: ほとんどの場合は速くなりますが、クエリやデータ量、インデックスの種類によります。小さなテーブルではインデックスが意味をなさないこともあります。また、複雑なクエリや非適切なインデックスでは逆に遅くなる場合があります。
Q2: インデックスはどの列に作ればよいですか?
A2: 検索条件や結合でよく使う列、ソートやグループ化に使う列が候補です。一方、更新が非常に頻繁な列や値のバリエーションが少ない列(例:男女のフラグ)は避けることが多いです。
A2: 検索条件や結合でよく使う列、ソートやグループ化に使う列が候補です。一方、更新が非常に頻繁な列や値のバリエーションが少ない列(例:男女のフラグ)は避けることが多いです。
Q3: 主キーとインデックスの違いは何ですか?
A3: 主キーは「その行を一意に識別するための制約(ルール)」です。多くのDBMSは主キーに対応するインデックスを自動で作りますが、インデックス自体は「検索を速くするための構造」です。目的が違います。
A3: 主キーは「その行を一意に識別するための制約(ルール)」です。多くのDBMSは主キーに対応するインデックスを自動で作りますが、インデックス自体は「検索を速くするための構造」です。目的が違います。
関連キーワード: データベース、インデックス、検索高速化、クエリ最適化、外部キー、主キー、スキーマ、B-tree、パフォーマンスチューニング

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

