2 番目の質問に答えるには: いいえ。ある場所から別の場所にデータを移動することは、レポートにトランザクション テーブルを使用した場合には発生しない余分な負荷です。しかし、この決定を下す前に、いくつか質問する必要があります。
- これらのレポートはどのくらいの頻度で実行されますか?
これらのレポートを 1 時間に 1 回実行している場合は、それらを同じテーブルに保持することが理にかなっている場合があります。ただし、このレポートの実行に時間がかかる場合は、それをトランザクション テーブルとして使用している他のクライアントのリソースを占有しないように注意する必要があります。
- これらのレポートはどの程度最新である必要がありますか?
レポートが毎日または毎週実行されない場合、レポートに分単位のデータを含めることは重要ではない可能性があります。
そして、ここでレポート テーブルの出番です。私が見てきたアプローチでは、通常、単一のテーブルとして実装するか、データベース全体として実装するかにかかわらず、"データ ウェアハウス" を用意する必要があります。このウェアハウスは、スケジュールに従ってトランザクション テーブルからのデータで満たされ、その後、レポートの生成がトリガーされます。これはあなたが提案しているアプローチのようで、完全に有効なものです。最終的に、答えなければならない 1 つの質問は、いつサーバーに負荷を処理させたいかということです。これがピーク時以外のスケジュールで実行できる場合は、それを選択してください。いつでも実行する必要がある場合は、単一テーブルのアプローチを維持することをお勧めします。
もちろん、両方できないということはありません。小規模なオンデマンド レポートがトランザクション テーブルで実行され、履歴データのスケジュールされたウェアハウスが作成され、その履歴データに対して長時間レポートが実行されるシステムをいくつか見てきました。実際には、データをどの程度リアルタイムにしたいかだけの問題です。