やりたいこと: 過去 1 日、過去 30 日間、過去 60 日間、過去 90 日間、各暦月、およびすべての期間について、最も人気のある検索クエリを計算します。
私の生データはタイムスタンプ付きの検索クエリのリストであり、関連するデータ集計のために夜間の cron ジョブを既に実行しているので、この計算をそれに統合したいと考えています。すべてのクエリを読むことは、毎日の集計では問題ありませんが (必要と判断できる限り)、他の期間ではコストのかかる計算になるため、事前にカウントされたデータを使用して節約する方法を探しています。時間。
やりたくないこと: 期間中の毎日のレコードを取得し、すべての集計を合計し、結果のリスト全体を並べ替え、上位 X の値を取得します。これは、特に「常時」リストの場合、非効率的です。
ヒープとバイナリ ツリーを使用して、リアルタイムの並べ替えを維持したり、データへのアクセスを高速化したり、各リストから単語を並行して読み取り、さまざまな制約や終了条件を使用してそれらの値をヒープにプッシュしたりすることを検討しましたが、これは常にルックアップ時間またはしばらくすると、基本的にすべてを見ることに戻ります。
また、各期間の累計を維持し、最新の日を追加して最も早い日を減算することも考えました (毎月の合計は毎月 1 日に保存されます) が、すべての期間の完全なカウントを毎日 (単に上位の X) と私はまだ毎日の合計のすべてのレコードを調べています。
これをより速く実行する方法はありますか?おそらく、他のデータ構造または私が気付いていない楽しい数学的プロパティを使用していますか? また、誰かが知る必要がある場合、このすべてが Django プロジェクト内に存在します。