クエリプランナー
SQLクエリを受け取り、物理的な実行計画を決めるDBのコンポーネント。どのインデックスを使うか、結合順序、結合アルゴリズム(nested loop / hash / merge)、並列度を選ぶ。より抽象的な書き換えを行うオプティマイザとは区別される。
コストベースオプティマイザ(CBO)は、各プラン案のコスト(CPU + IO)を見積もり、最も安いものを選ぶ。統計情報(pg_statistics、MySQLのANALYZE TABLE)が前提で、統計が古いと悪いプランになる。ルールベースオプティマイザ(RBO)は固定のルールで動く(Oracle 9i以前)。性能劣化の古典的な原因は「昨日まで動いていた同じクエリが突然遅い」で、たいていは統計が古くなったせいだ。ヒントについては、PostgreSQLは受け付けず、MySQLは対応(USE INDEX)、Oracleは豊富なヒント機構を持つ。プランの安定性は、それ自体がひとつの技術分野である。