関係データベースのアクセス性能向上を目的として、データベース管理システム(DBMS)がクエリを最適化する仕組みである「オプティマイザ」に関する記述として、適切なものはどれか。
- コストベースオプティマイザは、表の行数やインデックスの有無などの統計情報を基に実行計画を決定する。
- 結合処理において、大きな表同士の結合ではネステッドループ結合がハッシュ結合よりも常に高速である。
- 実行計画の決定においては、インデックスが存在すれば条件の絞り込み度に関わらず常にインデックス走査を選択する。
- ルールベースオプティマイザは、テーブルの統計情報を動的に解析して常に最短のCPU時間を計算する。
- 統計情報を更新すると実行計画が再評価されるため、データベースの運用中に統計情報を収集することは禁止されている。
正解と解説を見る
正解: コストベースオプティマイザは、表の行数やインデックスの有無などの統計情報を基に実行計画を決定する。
正解は「コストベースオプティマイザは、表の行数やインデックスの有無などの統計情報を基に実行計画を決定する。」です。オプティマイザはSQL文を実行する最適な手順(実行計画)を策定します。コストベースではカタログに記録された表の行数、データ分布、インデックスの有無などの統計情報から処理コスト(I/O回数やCPU時間等)を見積もって計画を選択します。「ルールベースオプティマイザは、テーブルの統計情報を動的に解析して常に最短のCPU時間を計算する。」は誤りで、統計情報ではなく静的な優先順位ルールに従います。「実行計画の決定においては、インデックスが存在すれば条件の絞り込み度に関わらず常にインデックス走査を選択する。」は誤りで、大半の行を取得する場合は全表走査の方が選ばれます。「結合処理において、大きな表同士の結合ではネステッドループ結合がハッシュ結合よりも常に高速である。」は誤りで、大量データ同士ではハッシュ結合が有利です。「統計情報を更新すると実行計画が再評価されるため、データベースの運用中に統計情報を収集することは禁止されている。