平成30年度 秋期 応用情報技術者試験 午前 問29
テクノロジ/データベース"部品"表のメーカコード列に対し,B⁺木インデックスを作成した。これによって,"部品"表の検索の性能改善が最も期待できる操作はどれか。ここで,部品及びメーカのデータ件数は十分に多く,"部品"表に存在するメーカコード列の値の種類は十分な数があり,かつ,均一に分散しているものとする。また,"部品"表のごく少数の行には,メーカコード列にNULLが設定されている。 部品(部品コード,部品名,メーカコード) ※メーカコードは外部キー メーカ(メーカコード,メーカ名,住所) ※メーカコードは主キー
出典:平成30年度 秋期 応用情報技術者試験 午前 問29
- アメーカコードの値が1001以外の部品を検索する。
- イメーカコードの値が1001でも4001でもない部品を検索する。
- ウメーカコードの値が4001以上,4003以下の部品を検索する。
- エメーカコードの値がNULL以外の部品を検索する。
正解:ウ
解説
B⁺木インデックスは,値を範囲比較(=,<,>,BETWEENなど)する検索で有効に働きます。メーカコードの値が十分な種類があり均一に分散しているため,「4001以上,4003以下」のような狭い範囲を指定する検索では,インデックスをたどって該当範囲だけを効率よく絞り込め,性能改善が最も期待できます。
選択肢ごとの解説
- ア誤り。「1001以外」のような否定条件は,ほとんどの行が該当するため絞り込み効果が薄く,インデックスの効果は限定的です。
- イ誤り。「1001でも4001でもない」も同様にほとんどの行が該当し,インデックスによる絞り込みの効果は小さいです。
- ウ正しい。「4001以上,4003以下」という狭い範囲検索は,B⁺木インデックスによる絞り込みの効果が最も期待できます。
- エ誤り。「NULL以外」もほとんどの行が該当する条件であり,値がごく少数しかないNULL以外を指定してもインデックスによる絞り込み効果は小さいです。