令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ試験 問13

過去問 午前Ⅱ試験過去問
アラフィフオヤジ
アラフィフオヤジ

令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ試験 問13を解いてみましょう。

テクノロジ系 >> データベース >> トランザクション処理

問題

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

 部品(部品コード, 部品名, メーカーコード
 メーカー(メーカーコード, メーカー名, 住所)

ア メーカーコードの値が1001以外の部品を検索する。

イ メーカーコードの値が1001でも4001でもない部品を検索する。

ウ メーカーコードの値が4001以上、4003以下の部品を検索する。

エ メーカーコードの値がNULL以外の部品を検索する。

解説

アラフィフオヤジ
アラフィフオヤジ

正解は「」です。

B+木インデックスは、キー値の範囲検索に効果的です。メーカーコード列は、メーカーコードの値の種類が十分に数があり、かつ、均一に分散しているため、範囲検索の対象となりやすいです。

ア、イ、エの操作は、メーカーコード列の値が特定の値である部品を検索する操作です。これらの操作は、メーカーコード列の値が特定の値である行を、順番に検索することになります。そのため、インデックスを作成しても、検索の性能が大きく改善されることはありません。

ウの操作は、メーカーコード列の値が4001以上、4003以下の部品を検索する操作です。これらの操作は、メーカーコード列の値が4001以上の行と、メーカーコード列の値が4003以下の行を、それぞれ検索することになります。インデックスを使用すれば、これらの行を、直接検索することが可能になります。そのため、検索の性能が大きく改善されると考えられます。

なお、”部品”表のごく少数の行に、メーカーコード列にNULLが設定されている場合でも、B+木インデックスは有効です。NULLは、B+木インデックスの葉ノードの終端として扱われます。