コンテンツフレーム起動

送信するデータ量の最小化 文書を SAP ライブラリストラクチャに組み込む

データベースシステムとアプリケーションサーバ間でのデータ転送は、ブロック単位で行われます。各ブロックのサイズは、32 KB までです (厳密なサイズは、ネットワーク通信用ハードウェアによって異なります)。管理情報も、データと同様にブロック単位で移送されます。 

ネットワークに極力負荷をかけないようにするには、転送するブロックをできるだけ少なくしてください。オープン SQL では、以下の手順で行うことができます。

行数の制限

SELECT 命令で一定の行数だけを読み込む場合は、FROM 句の UP TO <n> ROWS 追加を使用します。これによってデータベースシステムに対して、<n> 行だけアプリケーションサーバに逆転送するよう指示が行われます。必要以上の行をアプリケーションサーバに逆転送してから ABAP プログラム内で削除するよりも、この方が効率的です。

WHERE 句によって重複した入力が多数返されることが予想される場合は、SELECT 句のDISTINCT 追加を使用することができます。

列数の制限

データベーステーブルから読み込む列は、プログラムで実際に必要とするものだけにしてください。必要とする行だけを読み込むには、SELECT 句に列の一覧を入れます。ここで INTO 句の INTO CORRESPONDING FIELDS 追加は、データボリュームが大きい場合にのみ効率的であることに注意してください。データボリュームが小さいと、名称比較に要する実行時間が必要以上に長くなりすぎます。データが少量の場合は、INTO 句に変数の一覧を使用してください。

実際に必要な場合以外は、* を使用してすべての列を選択しないでください。ただし、個々の列をリストアップする場合、ABAP ディクショナリ内のデータベーステーブル構造が変更されていると、プログラムを調整する必要がある可能性があります。データベーステーブルを動的に指定する場合は、常にすべての列を読み込むようにしてください。 

集計機能の使用

データを計算のためだけに使用する場合、データベースから個々の項目を読み込んで ABAP プログラムで計算を行うより、SELECT 句の集計機能を使う方がたいていは効率的です。 

集計機能を使うと値の数を調べたり、合計額、平均値、最小値および最大値を見たりすることができます。集合式に続いて、その結果だけがデータベースから転送されます。 

テーブル行変更時のデータ転送

UPDATE 命令を使用してテーブル内の行を変更する際は、WHERE 句を使って該当の行を指定してから、SET 命令で必要な列だけを変更してください。 

作業領域を使ってテーブル行を上書きする場合、データが過剰に転送されることがよくあります。さらにこの方法では、作業領域を埋めるために余分な SELECT 命令を必要とします。

 

 

 

 

コンテンツフレーム終了