このプロジェクトでは Postgress データベースを使用していますが、この質問はどのデータベースにも適用できます。
データベースからのレコードの選択をより効率的にする必要があります。システムに登録されている各アクティビティのレコードを含むテーブル Activity があります。
表アクティビティは、次の列で構成されています
id integer
time_stamp time stamp without timezone
computer_id varchar(255)
user_id varchar(255)
...
一般に、単純な結果が必要です。5 分またはその他の期間のタイム スライスを指定できる必要があります。また、各タイム スライスにレコードがあるかどうかを確認する必要があります。したがって、最終的には、タイム スライスごとに True または False の結果が必要です。
True の場合はテーブルに色を付けるか、False の場合は空白のままにする必要があります。
do while ループを実行し、タイム スライスごとに多数のレコードを選択するプログラム ソリューションを作成しました。
例えば:
select *
from Activity
where time_stamp between prev_Time and curr_Time
これは機能しますが、非常に遅いです。タイム スライスが 5 分の場合、24 時間 x 60 分 / 5 分 = 288 の選択クエリがあります。
1 つの高速選択クエリを作成する方法を見つける必要があります。ストアド プロシージャを作成できません。さらに、開始時刻から終了時刻までのすべての期間を 5 分のグループで表示するために SQL を記述する方法がわからないこともよくあります。
コード内であっても、どのソリューションも受け入れられますが、高速である必要があります。応答は最大 10 秒以内にする必要があります。