令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ試験 問13を解いてみましょう。
テクノロジ系 >> データベース >> トランザクション処理
問題
“部品”表のメーカーコード列に対し、B+木インデックスを作成した。これによって、”部品”表の検索の性能改善が最も期待できる操作はどれか。ここで、部品及びメーカーのデータ件数は十分に多く、”部品”表に存在するメーカーコード列の値の種類は十分な数があり、かつ、均一に分散しているものとする。また、”部品”表のごく少数の行には、メーカーコード列にNULLが設定されている。実線の下線は主キーを、破線の下線は外部キーを表す。
部品(部品コード, 部品名, メーカーコード)
メーカー(メーカーコード, メーカー名, 住所)
ア メーカーコードの値が1001以外の部品を検索する。
イ メーカーコードの値が1001でも4001でもない部品を検索する。
ウ メーカーコードの値が4001以上、4003以下の部品を検索する。
エ メーカーコードの値がNULL以外の部品を検索する。
解説
正解は「ウ」です。
B+木インデックスは、キー値の範囲検索に効果的です。メーカーコード列は、メーカーコードの値の種類が十分に数があり、かつ、均一に分散しているため、範囲検索の対象となりやすいです。
ア、イ、エの操作は、メーカーコード列の値が特定の値である部品を検索する操作です。これらの操作は、メーカーコード列の値が特定の値である行を、順番に検索することになります。そのため、インデックスを作成しても、検索の性能が大きく改善されることはありません。
ウの操作は、メーカーコード列の値が4001以上、4003以下の部品を検索する操作です。これらの操作は、メーカーコード列の値が4001以上の行と、メーカーコード列の値が4003以下の行を、それぞれ検索することになります。インデックスを使用すれば、これらの行を、直接検索することが可能になります。そのため、検索の性能が大きく改善されると考えられます。
なお、”部品”表のごく少数の行に、メーカーコード列にNULLが設定されている場合でも、B+木インデックスは有効です。NULLは、B+木インデックスの葉ノードの終端として扱われます。