You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

[ |../../index.htm#lansa/l4wdev05_0245.htm]
現在地:

4.3.8.2 最適化した例

最適化のため、作業リストを用います。最初にSTATESファイルの内容を作業リストに読み込んでしまい、FETCHコマンドをLOC_ENTRYコマンドに置き換えることにより、毎回データベースにアクセスする代わりに、作業リストから状態コードの説明記述を取得するよう変更しました。
GROUP_BY   NAME(#TRANS) FIELDS(#TRANNUM #TRANDATE #TRANTIME             #TRANTYPE #TRANDESC #TRANUSER #TRANSTATE #STATDESC) DEF_LIST   NAME(#STATES) FIELDS(#STATCODE #STATDESC)             TYPE(*WORKING) ENTRYS(10) SELECT     FIELDS(#STATES) FROM_FILE(STATES) ADD_ENTRY  TO_LIST(#STATES) ENDSELECT SELECT     FIELDS(#TRANS) FROM_FILE(TRANS) LOC_ENTRY  IN_LIST(#STATES) WHERE('#STATCODE = #TRANSTATE') FETCH      FIELDS(#TRANS) FROM_FILE(TRNTYP)             WITH_KEY(#TRANTYPE) UPRINT     FIELDS(#TRANS) ENDSELECT
 
例えばファイルTRANSに1万のレコード、ファイルSTATESには6つのレコードがある場合、データベースには、(10000 + 6 + 10000) = 20006回アクセスすればよいので、9994回分の入出力処理を削減できたことになります。したがって実行時間は約3分の2になりました。
[ |../../index.htm#lansa/l4wdev05_0245.htm]

  • No labels