この項では、レポートを実行するときの処理時間とネットワーク トラフィックを最小にするための情報を紹介します。選択式とインデックスの最善の使い方を習得できるので、1 対多の状況で効率的にレポートを生成できるようになります。この項の情報を活用すれば、レポートを生成する際、必要な数以上のレコードを処理しなくて済みます。
1 対多のリレーションシップがある 2 つのデータベース テーブルから、一致するレコードを取り出す場合、プログラムが読み込んで評価するレコード数を決定する要因は、たくさんあります。
以下の表は、最終的にプログラムが読み込む必要があるレコード数に、いくつかの要因が影響していることを表しています。ここでは、次のような例を使用しています。
テーブル A には、26 のレコードがあります。アルファベットの 26 文字でできています。
テーブル B には、2600 のレコードがあります。テーブル A の各レコードに対して、一致するレコードが 100 ずつあります。
テーブル A にある特定の 2 つのレコード、およびこれら 2 つのレコードと一致するテーブル B の 200 のレコード(100 + 100)を探し出し、レポートを作成するのが目的です。
うまく行うと、およそ 200 レコード読み取るだけで作業を終了できます。
最悪の場合、同じ作業でおよそ 67,600 レコード読み取ることになります。
注 データ ファイルの処理速度に関して考慮する点は、SQL データベースの場合と異なります。データ ファイルとは、Crystal Reports から直接アクセスできるデータベースで、SQL 以外のデータベースのことです。この場合の SQL データベースとは、Crystal Reports から直接、または ODBC を介してアクセスできる、SQL コマンドの処理が可能なデータベース、および ODBC を介してアクセスできる SQL 以外のデータベースのことです。