一時テーブルは、現在のデータベースの代わりに TempDB に移動し、限られた範囲の後に消えることを除いて、ほとんどの特性において通常のテーブルに似ています (セッション ベースかグローバル一時テーブルかによって異なります。ただし、一時テーブルのデータへのすべての変更は、トランザクション ログに記録され、それに伴うすべてのパフォーマンスへの影響が含まれます。おお、通常のテーブルとまったく同じように、必要な数のインデックス、ビュー、トリガー、またはその他のものを一時テーブルに追加することもできます。
テーブル変数は一種のショートカット インメモリ テーブルです (一時 DB も使用します)。それらへの変更はログに記録されません (これによりパフォーマンスが向上します)。ただし、取得できるインデックスは 1 つだけです (最初の宣言ステートメントの後にインデックスを作成できないため、テーブル変数で作成できる唯一のインデックスは、最初のテーブル変数宣言に含めることができるインデックスです...
Declare @Tab Table (myKey integer Primary Key Not Null, data varchar(20))
これらの特性により、一時テーブルは大きなテーブル (幅が広く行数が多い) や、有効期間中に複数のアクセス パターンを受ける場合に適していますが、非常に狭いテーブルが必要な場合はテーブル変数が最適です (キーのみのテーブル、またはデータ列が 1 つだけのキー) であり、そのインデックス付きキーによって常にアクセスされます...