バインド変数化による解析情報の共有 前述の例1のようなSQLでは、異なる値を指定した処理が複数回行われた場合、WHERE句の条件列の値がリテラルで指定されているため(WHERE s_suppkey=1の部分)、改行の位置などを統一しただけでは同一のSQLとして解析されません。このような場合には、リテラル部分にバインド変数を使用することでSQLの記述を統一し、HARD PARSEを抑制することができます。 リテラルを使用したSQLとバインド変数を使用したSQLを1万回繰り返し行った場合にどのような違いが出るかを確認します。図2はリテラルで記述したSQLを実行、図3はバインド変数を使用したSQLを実行して取得したSQLトレース内のリカーシブコールに関する結果です。HARD PARSEの発生の有無によってリカーシブコールの発生回数に違いが現れています。 図2、図3の「Execute」はともに10