0

基本的に、ユーザーがファイルをアップロードして共有できるサイトがあります。ユーザーが過去30日間に行われたダウンロードの数を追跡し、それらの30日間のそれぞれを個別に表示できるようにしたいと思います。

31列のテーブルを作成することを考えていました。1列はIDで、残りはday1、day2、day3などです。このテーブルを毎日更新して、1日のダウンロードを前日に移動します。

私の質問は、これは効率的でしょうか、それともこれについてより良い方法がありますか?

4

3 に答える 3

3

ファイルテーブルにリンクするダウンロードテーブルを用意したほうがよいでしょう。ダウンロードテーブルは、ファイルがダウンロードされるたびにレコードを作成します。

id
file_id
ip_address
user_agent
created

次に、クエリを作成して、1日に何回ダウンロードが行われたかを判断するのは非常に簡単な作業です。

于 2013-01-13T03:15:05.257 に答える
1

基準を満たす経過日数を正確に判断するには、現在の日付とレコードが送信された日付の差を判断することをお勧めします。この方法を利用すると、複雑な列構造を必要とせずに、何を含めるべきか、何を含めないかを決定できます。

于 2013-01-13T03:11:53.823 に答える
0

これは特に効率的ではありません。私はより良い方法がテーブルを持つことだと思います:

UniqueID
FileID
DownloadTimeStamp

そして、すべてのダウンロードを続けて記録します。適切なインデックス(FileID、DownloadTimeStamp)を使用すると、その場で分析を行うことができます。

毎日の意味に応じて(UTCのようなグローバルな時間、またはユーザーのタイムゾーンで)、これらを次のようにロールアップできます。

FileID
Day
Count

パフォーマンスの問題と思われる場合は、分析の作業を減らすため。

于 2013-01-13T03:17:08.807 に答える