値(リテラル)のみが異なるような SQL を繰り返し実行する場合、バインド変数を利用することにより SQL が共有され、パフォーマンスが向上するというのは、データベースのパフォーマンスチューニングでは常識とされています。 (Oracle9i からは CURSOR_SHARING という初期化パラメータを設定することによって、SQL に含まれるリテラルを自動的にバインド変数化し、SQL を共有させることもできますが、原則的には SQL を発行する側で考慮すべきでしょう。) ただ、バインド変数化した場合、オプティマイザの挙動が気になります。 従来の Oracle では、リテラルで記述した SQL の場合はリテラル値を参考にして最適な実行計画を決定しますが、バインド変数化した SQL の場合はバインド変数にセットされた値を考慮せずに SQL の実行計画を決定していました。 しかし、Oracle