SQL Server 2008では、複雑なクエリを実行するストアドプロシージャがあります。私は結果をテンポラリテーブル(システムテンポラリテーブルではなく手動で管理されたテーブル)に書きます。動的SQLを使用しない動的参照テーブル
表の名前は、ユーザーのWebセッションIDの文字列表現です。これは並行性の問題を解決します。これはストアドプロシージャに渡され、テーブルが作成されます。クリーンアップするには、名前がタイムスタンプと共にメンテナンステーブルに記録されます。
ただし、名前は明らかに動的です。複雑なクエリのコンパイルを妨げるので、私は動的SQLを使いたくありません。私は、これは物事を推進している知っているが、次のように私は何を探していますは、次のとおりです。
DECLARE @TableName varchar(100)
SET @TableName = CAST(@SessionID AS varchar)
INSERT INTO @TableName
SELECT....{complex query}
私はこれをどのように行うことができますか?
さらに詳しい情報:
レコードセットは、数十行(IDのみ)何千ものである可能性があります。ユーザーはこのレコードセットにさらにフィルタリングを適用して、それを減らすことができます。したがって、サーバー上のテーブルでなければなりません。
ちょっとしたトリックと組み合わせて、私は昨日試しましたtは素晴らしい考えです。 (セッションID、UID)をPK&RIDとしてCol3として作成し、UIDはIDENTITY(1,1)です[これはトリックです]。パフォーマンスの観点から考えると、あなたのアイデアは、専用のテーブルよりも高速ではないにせよ、メンテナンスとアクセスが簡単になります。私はそれが好きです。 – IamIC