オプティマイザとは?オプティマイザ
オプティマイザとは、同じ結果を返す処理手順の候補を列挙し、推定コストが最小のものを実行計画として選ぶDBMSの構成要素。固定の優先順位で決めるルールベース(RBO)と、統計情報から行数とI/O量を見積もって比較するコストベース(CBO)があり、現在の主要製品はCBOを採る。
最終更新:2026-10-06
データベースSPを最短で暗記・合格する →背景
非手続型のSQLでは、開発者は結果だけを指示して手順を書かない。誰かが手順を決めなければ実行できないため、DBMSの内部に手順を選ぶ係が置かれた。おかげでアプリを直さずに索引追加やデータ増加へ自動で追従できる一方、なぜその手順になったのかが外から見えにくくなった。RBOとCBOで判断根拠が違うことが、この見えにくさの出発点として問われる。
具体例
Oracle Databaseは9iを最後にRBOを非推奨とし、以降はCBOへ一本化した。受注表と顧客表の結合で、顧客側の絞込みが数件と見積もられれば入れ子ループを、数十万件と見積もられればハッシュ結合を、まったく同じSQLに対して選び分ける。
試験での引っ掛け
統計情報を参照するのはCBOだけで、RBOは「索引があれば使う」といった順位表に従うため統計を見ない。この向きを逆にする出題が定番。またコストは推定値なので、CBOが選んだ計画が実測でも最速とは限らない。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。