正規化されたデータベースがあり、複数のテーブル間の結合を含むWebベースのレポートを頻繁に作成する必要があります。これらのクエリには時間がかかりすぎるため、ページをすばやく読み込むことができるように、結果を計算したままにしておきたいと思います。私が要約しているテーブルは頻繁に更新されており、これまでのすべての更新を反映するために要約が必要です。
すべてのテーブルには自動インクリメントの主整数キーがあり、ほとんどの場合、新しい行を追加して、計算結果をクリアするように調整できます。
テーブルの各行を反復処理し、イテレータの状態と見られた最高のプライマリキーン(つまり「ハイウォーター」)を追跡することで、単一のテーブルの要約が必要な同様の問題に取り組みました。これは単一のテーブルの場合は問題ありませんが、複数のテーブルの場合、テーブルごとに1つの高水位値を維持することになり、それは複雑に感じます。または、1つのテーブルに非正規化することもできます(アプリケーションをかなり大幅に変更します)。これは一歩後退したように感じ、データベースのサイズを約5GBから約20GBに変更する可能性があります。
(現在、sqlite3を使用していますが、MySQLもオプションです)。