科目A-1(多肢選択式・四肢択一、30問)
社員表に対してWHERE 部門コード = ? AND 入社年月日 > ?という検索条件を伴う問合せが頻繁に実行される。部門コードは10種類の値しか取らず、入社年月日はほぼすべての行で異なる値を取る。この検索を高速化するために複合インデックスを1つ作成する場合、最も効果的な列順序はどれか。
- ✓(部門コード, 入社年月日)の順で作成する
- B(入社年月日, 部門コード)の順で作成する
- C部門コードのみの単一列インデックスにする
- D入社年月日のみの単一列インデックスにする
解説
複合インデックスは、等価条件(=)で絞り込む列を先頭に、範囲条件(>など)で絞り込む列を後に配置すると、先頭列で対象行を絞り込んだ上で2列目の範囲条件も連続したインデックス範囲で効率的に評価できる。逆順にすると先頭の範囲条件がインデックスの絞り込みを分断し、部門コードでの効率的な利用ができなくなる。
根拠シラバス「データベース管理システムの特性」索引設計