RDBMS は SQL により指示を与えられると、どのように値を検索するかまず考える。これがハードパース。
バインド変数を利用しないと where句の条件が少し違うだけで、また考えてしまう。
一度、似たような SQL をどう検索するか、考えた結果を憶えておいて、これを利用するのがソフトパース。
このあたりに詳しい仕組みが説明されている。
HARD PARSEの発生の有無によってリカーシブコールの発生回数に違いが現れています。
...
なお、データの偏りが大きく、ヒストグラム統計情報を取得している場合には、WHERE条件をリテラルで指定した方がよりよい実行計画が選択される可能性が高くなります。
なるほど、なんでも使えばいいというものではない、何事も。
ちなみにリカーシブ(再帰)コールとは、 Oracle などは自分の内部情報も
テーブルにもっているので SQL で検索する。つまり SQL を実行するために、さらに内部で自動的に SQL が発行されている。