2011-06-23 9 views
1

高価なSQLリクエストのために、特定のテーブルをオンザフライで生成することに問題があります。私はテーブルをあらかじめ生成し、それを単にユーザに表示したいと思います。問題は:複数のバージョンのテーブルがあり、新しいテーブルが継続的に追加されることです。同じテーブルの複数のバージョンをキャッシュする

これらのテーブルを保持するテーブル(?)を設計する方法に関するアイディアを教えてください。 私が持っている考えの1つは、個々のテーブルの各行にバージョン番号を追加して、すべてを単一のキャッシュテーブルにダンプすることです。このようにして、バージョン番号をフィルタリングするだけで、要求されたバージョンを簡単に表示できます。より良い方法がありますか?

+3

もっと具体的な例がありますか?私はあなたが何をしているのかはっきりしていませんが、複数のバージョンのテーブルなどでちょっとしたクルージングが聞こえます。 –

+0

どのデータベースエンジンを使用していますか?ストアドプロシージャで一時テーブルを使用することについて話していますか? –

+0

さまざまなバージョンの処理ロジックを使用して、文字通り何十億行ものデータ行を処理する特定のジョブがあります。 キャッシュしようとしているテーブルは、そのジョブの出力を分析した結果です。基本的に2つの連続した論理バージョンの出力間の差異をカウントアップするため、テーブル自体にバージョン番号が付いています。ユーザは、バージョンnとn + 1との比較をバージョンn + 1とn + 2の比較に見ることから、迅速に切り替えることができなければならない。これは概念的なものなので、使用しているデータベースエンジンの関連性はわかりませんが、これはMS SQL Serverです。 – CatZilla

答えて

1

私はここでいくつかの仮定をしているかもしれませんが、動的SQLがそのトリックをするように私に聞こえます。

declare @sql varchar(max) 
select 
@sql = 'SELECT * FROM MyTableName_' + v.version 
from dbo.Version as v 
where v.id = 1 

exec (@sql) 

あなたがそれを使用して終了した場合、単に動的SQLがcruel mistressであることを知っています。片手で両手を引き、もう片手で離す。

関連する問題