考えているとおりに2番目のテーブルを作成し、トリガーを使用して、テーブル1が更新されるたびにテーブル2を更新できます。
ただし、トリガーには独自のパフォーマンスの問題があります。挿入と更新の速度が低下します。クエリのパフォーマンスを向上させるために、より従来型の代替手段を探すことをお勧めします。これは、SSISについて言及したのでSQLServerのように聞こえます。
30列のうち4〜5列しかないので、クエリをカバーするインデックスを追加してみましたか?WHERE句にさらに列があるかどうかはわかりませんが、最初に試してみてください。カバーインデックスは、クエリがテーブルに触れる必要がないため、実際にはあなたが説明していることを正確に実行します。もちろん、これはスペースと挿入/更新のパフォーマンスの点で少しコストがかかります。常にトレードオフがあります。
その上、30GBのテーブルから特定のレポートの行の大部分を引き出す必要があるとは信じられません。レポートに含めるにはデータが多すぎるだけです。フィルタリングされたインデックスは、要求される可能性が最も高い行にのみインデックスを付けることで、クエリのパフォーマンスをさらに向上させることができます。過去の暦月の結果を一覧表示するレポートがある場合は、WHERE report_date > '5/1/2012'
たとえば、行のみにインデックスを付ける条件を追加できます。