【iDempiere Lab】大量データ環境でトランザクションのウィンドウを開くのを高速化する

オープンソースのERP iDempiereの標準データ入力画面である、ウィンドウには、ウィンドウタイプとして下記の3種類があります。

  • トランザクション
  • マスタ
  • クエリ

 これらの中で「トランザクション」は、その名の通り、トランザクションデータを扱うためのウィンドウタイプになります。そのため、大量データになりやすいウィンドウとも言えます。このコンテンツはではウィンドウタイプが「トランザクション」における、ウィンドウを開く時間を高速化する方法について、調査及び研究し、その成果をまとめています。

 

前提

iDempiereは、その使い方次第で、パフォーマンス良く使う事もできますし、反対にパフォーマンスが悪くなってしまうような使い方もあります。パフォーマンス良く使ってもらえるように、JPiereで施したカスタマイズを下記にまとめてあるので、参照して下しい。

このコンテンツでは、ウィンドウタイプがトランザクションのウィンドウを開く際の高速化に焦点をあてて調査及び研究し、その成果をまとめています。

トランザクションのウィンドウを開く時の条件をカスタマイズする

ウィンドウタイプがトランザクションのウィンドウを開く時の条件は、GridTableクラスの、createSelectSql()メソッドに記述されています。

赤線で囲んであるところが、その条件に該当するのですが、その条件は簡単に説明すると「完成になっていない伝票か、この1日の間に更新された伝票」という条件になっています。基本的には、この条件に即したインデックスをDBに張っておくのがセオリーですので、これだけでも、それほどパフォーマンスは悪くはならないかなと思いますが、この条件をさらに絞り込む事で、大量にデータがある環境でも、パフォーマンス良くウィンドウを開く事ができるのではないかと思います。

 例えば、上記のように、ログインユーザーが登録したトランザクションデータのみの条件を追加して、"CreatedBy"のカラムにインデックスをはると、大量のデータ環境でも、とてもパフォーマンス良くウィンドウを開く事ができるのではないかと思います。

 パフォーマンス良く開けるかどうかは、もちろん条件に依存しますし、必ずインデックスがヒットする必要があります。

 ここでカスタマイズした条件は、あくまでもウィンドウを開く際の条件で、ウィンドウが開いた後は、Find Windowを使って自由にデータを検索する事はもちろんできます!