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

平成30年度 秋期 午前 問29

データベース

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

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

〔表:関係スキーマ〕

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

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

解説

値が連続した狭い範囲を取り出す検索です。

部品表のメーカコード列にB+木インデックスを作ったとき、どの検索でいちばん性能改善が見込めるかを選ぶ問いです。判断の軸は二つあり、どちらも設問の条件文が用意してくれています。一つ目は、その索引の構造がその検索の形に合うかどうかです。B+木は末端に値が小さい順に並び、末端どうしが横につながっています。ですから、ある値まで木をたどって降り、そこから横へ読み進めるだけで、連続した範囲をまとめて取り出せます。等号による一致と、上限と下限で区切った範囲に強い、という性質がここから出てきます。二つ目は、その検索が表全体のうちどれくらいの割合を返すかです。索引は、ごく一部だけを取り出すときに効きます。大部分を返す検索では、索引をたどってから表へ戻る往復のほうが高くつき、先頭から順に全部読むほうが速くなってしまいます。この二つを当てると、メーカコードの値が4001以上4003以下という検索が残ります。値の種類が十分多く均一に分散しているという条件があるので、三種類分は全体のごく一部にとどまり、しかも連続した範囲なので末端を横に読むだけで済むからです。設問の条件文が肢と一対一で対応していることにも注意してください。均一に分散という条件は範囲検索を生かすために、NULLがごく少数という条件は別の肢を切るために置かれています。索引が効くのは、ごく一部を順序を手がかりに取り出すときだ、と覚えておくと判断が速くなります。

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

この問題の用語

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

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