一時テーブルは、SQL Server では大きな問題です。
- コストのかかるクエリ プランの再コンパイルを引き起こします。
- テーブルの作成と削除も、プロセスに追加するコストのかかる操作です。
- 大量のデータが一時データに送られると、インデックスが不足して操作が遅くなります。一時テーブルにインデックスを作成できます。ただし、大量のレコードを扱う場合は一時テーブルをお勧めしません。
他のアプローチ:通常のテーブルを作成してから削除すると、同じオーバーヘッドが発生します。
別のアプローチ:既存のテーブルを使用し、追加の列で行を拡張して、各ユーザー/セッションに関連する行を区別することができます。テーブルを作成/削除する負担を取り除きますが、行を区別するために値を生成するコードに偏執的である必要があり、セッションが途中で終了した場合に備えてテーブルを維持する方法を開発する必要があります残り物 (処理の最後に削除されなかった行) があります。
処理戦略を再考することをお勧めします。一部の代替手段は、相関クエリ、派生テーブル、またはテーブル変数を使用するのと同じくらい簡単です。以下をご覧ください:http://www.sql-server- performance.com/articles/per/temp_tables_vs_variables_p1.aspx
編集: 通常のテーブルを作成して削除する方法と、フィールドを追加して通常のテーブルを再利用する方法:どちらも、変更されたデータ量によってテーブル統計の再評価がトリガーされるため、クエリ プランの再コンパイルが生成されます。繰り返しますが、最善の方法は、データを処理する別の方法を見つけることです。