過去問解きまくり研究所 ホーム

平成29年度 春期 午前 問28

データベース

インデックスに関する問題

“部品”表のメーカコード列に対し,B+木インデックスを作成した。これによって,“部品”表の検索の性能改善が最も期待できる操作はどれか。ここで,部品及びメーカのデータ件数は十分に多く,“部品”表に存在するメーカコード列の値の種類は十分な数があり,かつ,均一に分散しているものとする。また,“部品”表のごく少数の行には,メーカコード列に NULL が設定されている。実線の下線は主キーを,破線の下線は外部キーを表す。

〔表:関係スキーマ〕

表列(下線の種類)
部品部品コード(実線=主キー),部品名,メーカコード(破線=外部キー)
メーカメーカコード(実線=主キー),メーカ名,住所
答えと解説を見る

✓ これが正解ウメーカコードの値が 4001 以上,4003 以下の部品を検索する。

解説

値が順に並ぶので、狭い範囲の検索に効きます。

設問は、メーカコード列に B+木インデックスを作ったとき、検索の性能改善が最も期待できる操作を選ばせています。判断の軸は二つです。一つ目は構造です。B+木は末端にキーの値が小さい順に並び、末端どうしが横につながっています。ある値まで木をたどって降り、そこから横に読み進めれば連続した範囲をまとめて取り出せるので、等しい値を指定する検索と範囲を指定する検索に強くなります。二つ目は取り出す割合です。インデックスが効くのは表のごく一部を返すときで、大部分を返す検索では索引をたどってから表へ戻る往復のほうが高くつき、順に全件を読んだほうが速くなります。設問は、値の種類が十分多く均一に分散していると断っています。したがって 4001 以上 4003 以下という三種類ぶんは全体のごく一部にとどまり、しかも連続した範囲なので末端を横に読むだけで済みます。二つの軸を同時に満たすのはこの操作だけです。

ほかの選択肢はなぜ違うのか

この問題の用語

出典:平成29年度 春期 応用情報技術者試験 午前 問28

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)