バインド変数を使用すると、そのSQLは使いまわされハードパースの回数を減らすことができます。ハードパースを減らせばその分DBのパフォーマンスを向上させることが期待できます(※1)。
しかし、どんなSQLでもバインド変数を使用すれば必ず最適な結果が得られるというわけではありません。むしろバインド変数を使用することによりパフォーマンスが大幅に劣化する場合もあります。DBの特性を理解しSQLの性質を考慮したうえで、バインド変数を使用するかどうか判断する必要があります。
効果がある場合と悪影響がある場合は以下です。
効果がある場合
例:主キー指定のシンプルなSQL
むしろ悪影響がある場合
例:取得範囲が検索ごとに大きく異なる範囲検索
次にどのようなSQLは実行計画が変わらず、どのようなSQLならば最適な実行計画が変わるのかもう少し具体的に説明します。 |