前節に示した最初のプログラムは、FETCHコマンドにKEEP_LASTパラメータを指定するだけでも、「さらに最適化した例」に匹敵する処理性能が得られます。
GROUP_BY NAME(#TRANS) FIELDS(#TRANNUM #TRANDATE #TRANTIME
#TRANTYPE #TRANDESC #TRANUSER #TRANSTATE #STATDESC)
SELECT FIELDS(#TRANS) FROM_FILE(TRANS)
FETCH FIELDS(#TRANS) FROM_FILE(STATES)
WITH_KEY(#TRANSTATE) KEEP_LAST(6)
FETCH FIELDS(#TRANS) FROM_FILE(TRNTYP)
WITH_KEY(#TRANTYPE) KEEP_LAST(20)
UPRINT FIELDS(#TRANS)
ENDSELECT
TRANSファイルに例えば状態コードが3通り、取引タイプが5通り現れるとすれば、1万のレコードがあっても、データベースには、(10000 + 3 + 5) = 10008回アクセスすればよいことになります。これは19992回分の入出力処理の削減に相当します。したがって実行時間は約3分の1になりました。
KEEP_LASTパラメータについて詳しくは、FETCHコマンドの説明を参照してください。