実行計画とクエリオプティマイザとは?じっこうけいかくとくえりおぷてぃまいざ
クエリオプティマイザは、どの索引を使い、どの順で表を結合し、どの結合方式を取るかを決めるDBMSの部品で、その決定結果が実行計画である。SQLは欲しい結果だけを書く非手続き型なので手順は書かれておらず、オプティマイザは行数や値の分布を持つ統計情報から処理費用を見積もり、最も安い手順を選ぶ。
最終更新:2026-10-07
高度試験の午前Iを最短で暗記する →背景
同じ結果を返す処理手順は何通りもあり、どれが速いかはデータ量と値の分布で変わる。書いた順に実行する方式では、条件の並べ方ひとつで性能が桁で変わり、データが増えるたびに文を書き直すことになる。手順の決定をDBMSへ委ね、運用側は統計情報を最新に保つ責任だけを負う形に分けた。
具体例
PostgreSQLのEXPLAIN ANALYZEやOracleの実行計画表示で、どの索引を使ったか、全表走査になっていないかを確認する。大量のデータを投入した直後は統計情報が古く、実際は100万行ある表を100行と見積もって不利な結合方式を選ぶため、統計を取り直すと計画が変わる。
試験での引っ掛け
副問合せを結合に書き換えても、オプティマイザが同じ計画へ変換してしまい効果が出ないことが多い。性能が急に落ちた原因はSQLではなく統計情報の陳腐化であることが多く、文を疑う前に実行計画を見る順序が問われる。開発環境で速くても、本番のデータ量では選ばれる計画そのものが変わる。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。