データベースの基礎

100万行ある会員表の会員番号の列にB+木のインデックスを作成した。一般に期待できる効果と、その代償の組み合わせとして正しいものはどれか。

  1. AWHERE 会員番号 = 12345 のような検索が速くなる一方、行の追加や更新のたびにインデックスも更新するので、書き込みは遅くなる
  2. Bすべての列での検索が速くなり、代償はない
  3. C表の行が会員番号の順に並べ替えられるので、どの検索も速くなる一方、記憶容量は半分になる
答えと解説を見る

正解:A. WHERE 会員番号 = 12345 のような検索が速くなる一方、行の追加や更新のたびにインデックスも更新するので、書き込みは遅くなる

インデックス(索引)は、表の特定の列の値から、その値を持つ行の位置をすばやく探すためのデータ構造で、関係データベースではB+木がよく使われます。インデックスがなければ、WHERE 会員番号 = 12345 の行を探すのに100万行を順に調べる(全件走査)必要がありますが、B+木では根から葉まで数段たどるだけで見つかります。例えば1つのノードから100個に枝分かれするなら、100 × 100 × 100 = 100万なので、およそ3段です。B+木の葉は値の順につながっているので、BETWEENのような範囲の検索や、ORDER BY の並べ替えにも使えます。一方、行を追加・更新・削除するたびにインデックスも更新する必要があるので、書き込みは遅くなり、インデックスの分の記憶容量も必要です。インデックスを作っていない列での検索は速くなりません。

  • A. 正しい。検索は速くなりますが、書き込みのたびにインデックスを保守する負担が増えます。
  • B. インデックスが効くのは、インデックスを作った列での検索です。書き込みの負担と記憶容量という代償もあります。
  • C. インデックスは表とは別に作るデータ構造で、記憶容量はむしろ増えます。
この分野を解く 分野ページへ

関連する計算ツール

データベースの基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

データベースの基礎のほかの問題

  1. 100万行の会員表で、会員番号(すべて異なる)、都道府県(47種類)、性別(2種類でほぼ半々)の列に、それぞれB+木のインデックスを作ることを考える。WHERE句で1つの列の値を指定して検索するとき、インデックスの効果が最も小さいと考えられる列はどれか。
  2. NoSQLと呼ばれるデータベースのうち、キー・バリュー型の特徴として、一般に正しいものはどれか。
  3. 複数のサーバにデータの複製を置く分散データベースについての、CAP定理の説明として適切なものはどれか。
  4. 関係データベースの用語で、表(リレーション)の1行に当たるものはどれか。
  5. 関係データベースの表で、主キーに指定する列(または列の組)が満たさなければならない条件はどれか。