各ユーザーの過去 30 日間の情報を記録するデータベースをセットアップしようとしています。データは 1 日 1 回 (つまり、cron ジョブによって) 記録され、アイテムの値になります (つまり、常に変化します)。
これを構造化する最良の方法は何ですか?テーブルを設定してから、30日をテーブルに保存し、cronジョブで新しい日を追加するときに31日目を削除することを考えていました(そして、他のすべてを1日上にシフトします)が、これはあまりないようです効率的..
助けてくれてありがとう。
各ユーザーの過去 30 日間の情報を記録するデータベースをセットアップしようとしています。データは 1 日 1 回 (つまり、cron ジョブによって) 記録され、アイテムの値になります (つまり、常に変化します)。
これを構造化する最良の方法は何ですか?テーブルを設定してから、30日をテーブルに保存し、cronジョブで新しい日を追加するときに31日目を削除することを考えていました(そして、他のすべてを1日上にシフトします)が、これはあまりないようです効率的..
助けてくれてありがとう。
できることは、各エントリに現在の日付を保存してから、cron ジョブで、30 日以上経過したすべてのエントリを削除することです。
たとえば (MySQL の場合)、
DELETE FROM user_statistics WHERE DATEDIFF(NOW(), date_of_record) > 30;
列を使用して実際の日付でログに記録しDATE
ます。MySQL では、「過去 30 日間」を簡単に照会できます。
パージに関しては、cron ジョブは 30 日より古いものを簡単に削除することもできます。または、30 日より古いものを無視するのは簡単なので、古いレコードを削除しないことを選択することもできます (少なくとも毎日ではない)。
ユーザーデータを独自の日付で保存し、制限を超えたときに最も古いものを削除します。何もシフトする必要はありません。