ページの表示が遅い場合、下記のリンク先に記載のとおり複数の要因が考えられますが、ここでは、リストビューにデータ連結しているテーブルのレコード数が膨大なため遅くなっている場合に絞って、最速で表示する方法を説明します。
基本的に、リストビューに表示するデータ量が多ければ多いほど表示に時間がかかります。
このため、表示するデータ量をクエリー等で絞り込むことが速度改善として有効ですが、Forguncyでは複数の絞り込み方法があり、どのような時にどの絞り込み方法を使用するかによってその効果が異なります。
効果的なクエリーの指定方法
Forguncyでは、データを絞り込む方法として、以下の方法があります。
(1)リストビューを右クリックして表示される「クエリー条件」を指定する。
(2)「ページロード時のコマンド」で「クエリー」コマンドを指定する。
(3)ボタン等のコマンドで「クエリー」コマンドを指定する。
ページが表示される際にデータを絞り込みたい場合、(1)や(2)でできますが、処理の実行は(1)→(2)→(3)の順で行われます。
つまり(1)で絞り込みを行うと、それによって絞り込まれたデータを対象として(2)の絞り込みが行われる動きになります。また(3)の絞り込みも同様で、(1)を行なっていればそれによって絞り込まれたデータを対象として(3)の絞り込みが行われる動きになります。
例えば、都道府県のデータを表示する例で説明します。
(1)で「東京都」のデータのみを取得すると、クライアント側に「東京都」のデータのみが取得されます。この状態で(2)や(3)で「府中市」のクエリーを行うと、「東京都」の「府中市」が表示されます(広島県府中市が表示されるようなことはありません)。
改善ポイント:
該当ページで使用したい対象データを絞り込める場合は、(1)を実施するのが効果的です。
改善ポイントの注意事項:
(1)の「クエリー条件」に「田中」などのように直接「値」を指定した場合と、「=A1」などのように「セル参照」を指定した場合とで、リストビューの読み込みの動きが異なります。
- 条件式に「田中」などのように直接「値」を記載した場合
ページが描画される前に、記載された「値」の条件式でデータベースに問い合わせが行われます。
このケースでは、リストビューがデータを読み込む処理は1回のみとなり、絞り込まれた値のみが表示されるため高速になります。
つまり、「値」を指定できる場合は、値を指定した方が高速になります。 - 条件式に「=A1」などのように「セル参照」記載した場合
ページが描画されないと参照先の値をページ内で認識することができないため、Forguncyは内部で一旦テーブルに対して全件問い合わせを行います。
そして、セル参照の値が確定してから、最初の全件問い合わせによって内部で保持しているデータの中から条件値に一致するデータを読み出してリストビューに描画するという処理を行います。
このケースでは、2回リストビューデータの読み込みが発生し、かつ1回目で全件取得を行なっているため、条件式に直接「値」を指定した場合に比べると非常に遅くなる結果となります。
これを防ぐ方法として、リストビューを右クリックして「リストビュー設定」ー「データ」タブの「ページ表示時にリストビューのデータを読み込まない」をチェックをすると、初回の全件読み込みが発生しなくなり、セル参照の値が確定してから、その値を使用してクエリーが1回のみ実行されるようになり、速度の改善が期待できます。
つまり、「セル参照」を指定した場合は、リストビューを右クリックして「リストビュー設定」ー「データ」タブの「ページ表示時にリストビューのデータを読み込まない」をチェックをすることで高速になります。
なお、2回目の読み込み時にクエリーが実行されるため、「ページ表示時にリストビューのデータを読み込まない」をチェックしていてもデータは表示されます。