(Transact-SQL)後で処理するために結果セットを格納するときに使用する特別なデータ型です。テーブル値関数の結果セットとして返される、行のセットの一時的な格納場所として使用します。型として宣言できます。プロシージャ、およびバッチ内で使用できます。テーブルを定義するために使用する情報のサブセットと同じです。テーブルの定義には、列の定義、名前、データ型、および制約が含まれます。(Transact-SQL)」を参照してください。指定しない場合は、現在のデータベースの照合順序が列に継承されます。ユーザー定義型として定義されている場合は、ユーザー定義型の照合順序が列に継承されます。格納しないでください。テーブル変数に大量のデータを格納すると、最適かつ安定したプランの選択ができなくなる可能性があります。一時テーブルを使用するようにこのようなクエリを書き直すことを検討してください。プランがオプティマイザーで使用されるようにしてください。句の名前により参照できます。変数は別名を使用して参照する必要があります。プランを含む小規模なクエリに次のような利点をもたらします。変数は、ローカル変数のように機能します。この変数には適切に定義されたスコープがあります。プロシージャ、またはバッチです。変数は、そのスコープの中で、通常のテーブルのように使用できます。各ステートメントで、テーブルまたはテーブル式が使用されている任意の場所で適用できます。以下のステートメントでは使用できません。プロシージャ、またはバッチの終了時に自動的に削除されます。プロシージャの再コンパイルの回数が一時テーブルを使用した場合よりも少なくなります。変数に対する更新の実行中のみ有効です。変数を使用すると、ロックおよびログで必要なリソースが少なくて済みます。オプティマイザーのコストベースの推論モデルではサポートされていません。プランを実現するためにコストベースの選択が必要な場合は、この変数を使用しないでください。コストベースの選択が必要な場合は、一時テーブルが推奨されます。通常は、結合、並列処理に関する決定、およびインデックスの選択を使用するクエリがこれに含まれます。変数を変更するクエリは、並列クエリの実行プランを生成しません。変数を変更する場合は、パフォーマンスに影響が生じることがあります。このような場合は、代わりに一時テーブルを使用することを検討してください。(Transact-SQL)」を参照してください。変数を変更せずに読み取るクエリは並列処理できます。変数ではインデックスを明示的に作成することができず、統計が保持されません。場合によっては、インデックスと統計をサポートする一時テーブルを使用した方がパフォーマンスが向上します。(Transact-SQL)」を参照してください。値、および計算列は、ユーザー定義関数を呼び出すことができません。変数間における代入操作はサポートされていません。ロールバックには影響されません。ステートメントが続きます。列の値と異なることに注意してください。テーブルで定義されるためです。返される列には、トリガーが起動される前のデータが反映されます。(Transact-SQL)」を参照してください。テーブル値関数を返します。