データベースのパフォーマンスに影響する設定や実装について紹介します。
テーブルにインデックスを追加すると、クエリーのパフォーマンスの向上が期待できます。
アクセス頻度の高いテーブルデータのフィールドにはインデックスを追加すると、レコード検索や並び替えのパフォーマンス向上が期待できます。また、並び順の設定も有効です。
アクセス頻度が少ないフィールドなどに設定した不要なインデックスは削除するようにしてください。インデックスはデータ操作時に更新対象になるため、多くのインデックスを作成すると処理速度の低下を招く恐れがあります。
異なるデータベースのテーブル間に関連付けをしたりクエリーを実行することは避けてください。異なるデータベース間での関連付けやクエリー操作が必要な場合はコピーテーブルを使用してください。コピーテーブルはForguncy内部テーブルとして扱われるため、データベース本体に影響を及ぼすことはありません。
データベースから取得するレコード数は必要最小限に留めてください。取得データのサイズの抑制が行え、さらにクエリー速度の低下、メモリの過剰使用を防ぐことにもつながります。ロードオンデマンド機能を有効にすることで、取得レコード数を制限しパフォーマンスの向上が期待できます。
数式フィールドにはインデックスを設定できないため、それらをクエリーや並び替え、関連付けに使用すると、特にデータ量が多い場合にパフォーマンスに影響を及ぼす恐れがあります。数式フィールドの使用は必要最低限に留めてください。
同時実行性の高いテーブルでは[自動採番]機能の使用は避けてください。[自動採番]機能の値生成処理が実行されるため、高い同時実行性の環境ではパフォーマンスの低下を招く恐れがあります。
キャッシュデータを利用することで、データベースへのアクセス回数が減り、処理の高速化やレスポンス時間の短縮につながるため、パフォーマンスとユーザビリティが向上します。
Forguncyでは、テーブルやリストビュー、コンボボックス型セル、変数の設定コマンドなどにキャッシュ機能があります。以下のような条件下ではキャッシュを有効にすることを推奨します。
データの更新が少なく、実行頻度の高いクエリー(マスターテーブルなど)
データベースへのアクセスは、その頻度に応じてパフォーマンスの負荷も高くなります。キャッシュデータの使用は、データへのアクセス頻度を減少させることができます。
複雑で処理に時間のかかるクエリー
クエリーが複数のテーブルをまたいだり、大量のデータを処理したりするような複雑な処理によって、パフォーマンスが低下する可能性があります。キャッシュの使用は、クエリーの再実行の時間やリソースの消費を削減することができます。
データを素早く取得する必要がある場合
以下のようなアプリケーションでは、データの書き込み頻度が低い代わりに、高いデータの読み込み速度を求められます。
顧客管理アプリケーション
在庫管理アプリケーション
製品情報管理アプリケーション
統計データを算出する場合、通常は集計フィールドを使用します。しかし、データ量が多くアクセス頻度が高いテーブルでは、ページ上のリストビューやグラフなどの表示パフォーマンスに影響を与える恐れがあります。
このような場合、統計データ用に必要な情報を保持する新しいテーブル(キャッシュテーブル)を作成し、そのテーブルに対して統計データをクエリーで絞り込むようにしてください。このテーブルの情報の同期はスケジュールタスクを作成しシステムの負荷の低い時間帯に行うと良いでしょう。