1

駐車場の状態を表す、次の構造とデータを含むテーブルがあります。

id  bayID   state     starttime
1   1       FREE      2013-08-09 09:13:02
2   1       OCCUPIED  2013-08-09 09:15:50
3   1       FREE      2013-08-09 09:33:15
4   1       OCCUPIED  2013-08-09 09:35:10
5   1       FREE      2013-08-09 10:03:22

ここで、ベイの平均駐車占有時間を計算する必要があります。レコードは数百万になる可能性があるため、これを行うための最適な方法を探しています。これにより、平均のクエリをすばやく実行できます。

私の考えは、上記のテーブルのデータを、駐車時間が既に計算されている別のテーブルに前処理することでした。これは、ベイの OCCUPIED エントリと FREE エントリのペアを見つけて、開始時間の時間差を計算することによって行われます。これにより、次のような構造が得られます。

bayID   starttime             duration
1       2013-08-09 09:15:50   ...
1       2013-08-09 09:35:10   ...

次に、2 つの日時の間でクエリを実行し、期間を平均化できます。

これが推奨されるアプローチのように思われる場合、計算されたデータセットがどのように作成されるのか疑問に思っていました。私はできると思います:

  • 最初のテーブルへの挿入後に実行されるトリガーを作成し、計算を行い、必要に応じて別のテーブルに挿入します。
  • 最初のテーブルにビューを作成します。残念ながら、これが可能かどうかを知るのに十分な MySQL の知識がありません。

コーディングに飛び込む前に、提案されたソリューションについて誰かアドバイスをもらえますか? それらは両方とも実行可能であり、どちらか一方を使用することの (欠点) 利点は何ですか?

4

1 に答える 1