資格スワイプ
科目A-2(多肢選択式・四肢択一、25問)

ある大規模なテーブルに対する検索SQLの実行計画を確認したところ、WHERE句で絞り込み条件を指定しているにもかかわらずテーブルフルスキャンが選択されており、想定より処理時間が長くなっていた。原因調査の結果、対象列に索引は存在していたが、直近の大量データ更新後に統計情報が更新されていなかったことが判明した。このときまず行うべき対応として最も適切なものはどれか。

  • テーブルの統計情報を再取得(更新)し、オプティマイザが最新のデータ分布に基づいて実行計画を再評価できるようにする
  • B対象列の索引を削除し、別の列に新しい索引を作成し直す
  • CSQL文の結合順序をヒント句で強制的に固定し、統計情報の更新は行わない
  • Dテーブル全体をトランケートし、データを入れ直す

解説

オプティマイザはテーブルの行数や列の値の分布などの統計情報を基にアクセスパス(索引を使うかフルスキャンにするか)を決定する。統計情報が古く実態と乖離していると、索引が存在していても不適切な実行計画が選ばれることがあるため、まず統計情報を更新して最新のデータ分布を反映させるのが適切な対応である。

根拠シラバス「期待する技術水準」性能設計・チューニング(オプティマイザ・統計情報・実行計画)

← 前の問題次の問題 →
スワイプでまとめて流す