実行計画とクエリオプティマイザとは?じっこうけいかくとくえりおぷてぃまいざ
実行計画とクエリオプティマイザとは、結合の順序や索引の使い方を利用者が書かないSQLに対して、DBMSの内部で手順を決める仕組みと、その決定結果を指す。統計情報が持つ行数や値の分布からコストを見積もって最も安い手順を選ぶ役がオプティマイザ、選ばれた手順の中身が実行計画で、EXPLAINなどのコマンドで取り出せる。
最終更新:2026-10-06
この語が出る過去問を解く →背景
手順を書かせない代わりに最適化を処理系へ任せる、というのが関係データベースが選んだ取引である。おかげで利用者は結合の順序を考えずに済むが、同じSQLでもデータ量や分布が変われば最良の手順は変わるため、判断材料が古ければ誤った選択が起きる。性能問題の原因が文の書き方ではなく統計情報の側にあり得るのは、この委任の構造から来ている。
具体例
PostgreSQLではEXPLAIN ANALYZEで見積り行数と実測行数を並べて確認でき、両者が桁で食い違えば統計情報の陳腐化を疑ってANALYZEで再収集する。大量データを投入した直後は、実際は100万行の表を100行と見積もったまま不適切な結合方式が選ばれることがある。
試験での引っ掛け
SQLの書き方を変えれば計画が変わると決めつけるのは誤りで、副問合せと結合のように書き分けてもオプティマイザが同じ計画へ書き換えることは多い。逆に、文をまったく変えていないのに統計情報が古いだけで急に遅くなることもある。原因を切り分ける順序として、文を疑う前に統計情報と実行計画を確認する。開発環境で速くても、本番のデータ量と分布では計画そのものが変わる点も見落としやすい。
関連用語
出た過去問
出典:令和3年度 春期 応用情報技術者試験 午前 問30(IPA)
コストベースのオプティマイザがSQLの実行計画を作成する際に必要なものはどれか。
正解:統計情報
要点:コストベース最適化は統計情報から実行計画を選ぶ
コストベースオプティマイザは、表の行数や列値の分布、索引の状態といった統計情報をもとに各実行計画の処理コストを見積もり、最も低コストな計画を選ぶ。統計情報が古いと実態と乖離した計画が選ばれるため、定期的な収集・更新が必要である。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。