optimize-for-clause

OPTIMIZE FOR 節は、 選択ステートメント の特殊な処理を要求します。

Read syntax diagramSkip visual syntax diagramOPTIMIZE FORintegerROWSROW

この節が省略されると、結果表のすべての行が検索されることが想定されます。指定されている場合には、検索される行数はおそらく n を超えないことを前提としています。ここで、ninteger の値です。 n の値は、正の整数 (ゼロを除く) でなければなりません。 OPTIMIZE FOR 節を使用すると、 n 個の行が検索されることを前提とする照会の最適化に影響を与えます。 さらに、ブロックされているカーソルの場合、 この節は、各ブロックで戻される行の数に影響を与えます (すなわち、 各ブロックで戻される行の数は n 行以下になります)。 fetch-clauseoptimize-for-clause の両方が指定されている場合には、 これらの節の integer 値のうちの小さい方を使用して通信バッファー・サイズが決定されます。 これらの値は最適化処理専用です。

この節を指定しても、取り出される行の数が制限されることはなく、 パフォーマンス以外ではどんな点でも結果に影響を与えることはありません。 OPTIMIZE FOR n ROWS を使用した場合、 n 個以下の行を取り出す場合にはパフォーマンスが向上することがありますが、 n 個を超える行を取り出す場合にはパフォーマンスが低下する可能性があります。

n の値に行のサイズを乗算した値が、 通信バッファーのサイズを超える場合、OPTIMIZE FOR 節はデータ・バッファーに影響を与えません。 通信バッファーのサイズは、rqrioblk または aslheapsz 構成パラメーターによって定義されます。