平成29年度春期 応用情報技術者試験 午前 問28
“部品”表のメーカコード列に対し,B⁺木インデックスを作成した。これによって,“部品”表の検索の性能改善が最も期待できる操作はどれか。ここで,部品及びメーカのデータ件数は十分に多く,“部品”表に存在するメーカコード列の値の種類は十分な数があり,かつ,均一に分散しているものとする。また,“部品”表のごく少数の行には,メーカコード列にNULLが設定されている。実線の下線は主キーを,破線の下線は外部キーを表す。 部品(部品コード,部品名,メーカコード) メーカ(メーカコード,メーカ名,住所)
- ア メーカコードの値が1001以外の部品を検索する。
- イ メーカコードの値が1001でも4001でもない部品を検索する。
- ウ メーカコードの値が4001以上,4003以下の部品を検索する。
- エ メーカコードの値がNULL以外の部品を検索する。
解答・解説を見る
正解:ウ
AI解説
B⁺木インデックスはキー値を順序付けて葉ノードに並べる構造のため,等号検索に加えて「以上・以下・BETWEEN」のような範囲検索に強いのが最大の特徴である。よって範囲条件で少数の行に絞り込むウが最も性能改善を期待できる。 ア: 「1001以外(≠)」の否定条件はほとんどの行が該当するため,インデックスを使うより全表走査の方が効率的で,改善効果は小さい。 イ: アと同様に否定条件の組合せで大部分の行がヒットするため,インデックスの効果はほとんどない。 ウ: 正しい。4001以上4003以下という範囲検索はB⁺木の順序構造を直接活用でき,該当行が少数なら大幅な性能改善が期待できる。 エ: NULL以外の検索はごく少数のNULL行を除くほぼ全行が該当するうえ,一般にNULLはインデックスで扱いにくく,効果は期待できない。 💡 「B⁺木=範囲検索に強い」「否定条件(≠,NOT)やヒット率の高い条件にはインデックスは効かない」の2点で択一できる。ハッシュインデックスは等号のみ・範囲不可との対比も頻出。
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。