データベースの基礎

100万行の会員表で、会員番号(すべて異なる)、都道府県(47種類)、性別(2種類でほぼ半々)の列に、それぞれB+木のインデックスを作ることを考える。WHERE句で1つの列の値を指定して検索するとき、インデックスの効果が最も小さいと考えられる列はどれか。

  1. A都道府県
  2. B性別
  3. C会員番号
答えと解説を見る

正解:B. 性別

インデックスが効果を発揮するのは、条件に合う行が全体のごく一部に絞り込まれる場合です。会員番号はすべて異なるので、条件に合うのは1行だけで、インデックスで直接たどり着けます。都道府県は47種類なので、均等に分かれていれば、1つの値で約 100万 ÷ 47 ≒ 2万1千行(全体の約2%)に絞られます。性別は2種類でほぼ半々なので、どちらの値を指定しても約50万行(約50%)が該当します。これほど多くの行を、インデックスを経由して1行ずつ取り出すと、表を最初から順に読む全件走査より遅くなることが多いので、DBMSのオプティマイザはインデックスを使わない実行方法を選ぶことがあります。このように、値の種類が多く、条件で行を絞り込める度合い(選択性)が高い列ほど、インデックスの効果は大きくなります。

  • A. 都道府県は47種類あり、1つの値で全体の約2%に絞り込めるので、性別よりは効果があります。
  • B. 正しい。どちらの値でも約半分の行が該当するので、インデックスの効果がほとんどありません。
  • C. 会員番号はすべて異なり、1行に絞り込めるので、インデックスの効果が最も大きい列です。
この分野を解く 分野ページへ

関連する計算ツール

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

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

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

  1. NoSQLと呼ばれるデータベースのうち、キー・バリュー型の特徴として、一般に正しいものはどれか。
  2. 複数のサーバにデータの複製を置く分散データベースについての、CAP定理の説明として適切なものはどれか。
  3. 関係データベースの用語で、表(リレーション)の1行に当たるものはどれか。
  4. 関係データベースの表で、主キーに指定する列(または列の組)が満たさなければならない条件はどれか。
  5. 社員表(社員番号, メールアドレス, 氏名, 部署)で、社員番号とメールアドレスはどちらも社員ごとに異なり、NULLにならない。氏名と部署は、ほかの社員と同じになることがある。この表の候補キーをすべて挙げたものはどれか。