問題

データベースのインデックスに関する記述として、適切なものはどれか。

ア)インデックスを作成すると、検索性能は向上するが、挿入・更新・削除の際にインデックス自体も更新されるため、更新性能は一般に低下する傾向がある。

イ)インデックスは検索性能にのみ影響し、挿入・更新・削除の性能には一切影響を与えない。

ウ)テーブルに設定するインデックスの数は多いほど良く、性能上のデメリットは存在しない。

エ)カーディナリティ(値の種類の多さ)が低い列にインデックスを作成すると、一般に検索の絞り込み効果が高く、大きな性能向上が期待できる。

解答・解説を見る

正解: ア)

解説:

  • ア)インデックスはWHERE句などによる検索を高速化する一方、テーブルへの挿入・更新・削除のたびにインデックス自体も更新する必要があるため、更新系の処理性能は一般に低下する傾向があります。正解です。
  • イ)上記の通り、インデックスは検索性能だけでなく、更新系の性能にも影響を与えます。「一切影響を与えない」は誤りです。
  • ウ)インデックスの数が増えるほど、更新時に維持すべきインデックスも増え、更新性能の低下やディスク使用量の増加といったデメリットが生じます。「多いほど良く、デメリットは存在しない」は誤りです。
  • エ)カーディナリティが低い列(例:性別のように値の種類が少ない列)にインデックスを作成しても、絞り込み効果は小さく、検索性能の向上は限定的です。一般にカーディナリティが高い列(値の種類が多い列)へのインデックス作成のほうが効果的とされ、記述は誤りです。

重要キーワード

用語説明
インデックス検索を高速化するために作成される補助的なデータ構造
カーディナリティ列に含まれる値の種類の多さ
更新性能の低下インデックス維持のために生じる挿入・更新・削除の負荷増加
実行計画クエリの処理手順を最適化するためにDBMSが立てる計画