ストアド プロシージャに一時テーブルがあり、複雑な計算を実行しているため、クエリのタイムアウトが発生しています。使い終わったら落としたい。のように作成しました。
DECLARE @SecondTable TABLE
今、私はそれを使用してドロップすることはできません
drop @SecondTable
実際、私は使用する必要があります
drop #SecondTable
誰かが理由を知っていますか?
ストアド プロシージャに一時テーブルがあり、複雑な計算を実行しているため、クエリのタイムアウトが発生しています。使い終わったら落としたい。のように作成しました。
DECLARE @SecondTable TABLE
今、私はそれを使用してドロップすることはできません
drop @SecondTable
実際、私は使用する必要があります
drop #SecondTable
誰かが理由を知っていますか?
私は決して SQL の第一人者ではありませんが、なぜ削除が必要なのですか?
テーブル変数の場合、ストアド プロシージャが終了すると存在しなくなります。
私は実際にあなたにDROP #SecondTable
エラーが出ないことに驚いています。そこに一時テーブルをドロップしているため。テーブル変数ではありません。
編集
あなたのコメントに基づいて、私の更新は以下のとおりです。
1.) テーブル変数を使用している場合 ( @SecondTable
); その場合、ドロップは必要ありません。SQL Server がこれを処理します。
2.)テーブル自体の削除ではなく、テーブルを使用した計算によってタイムアウトが発生したようです。この場合; テーブル変数の代わりに一時テーブルを使用することをお勧めします。一時テーブルを使用すると、インデックスなどを追加してパフォーマンスを向上させることができるため。テーブル変数はそうではありません。これでも十分でない場合。クエリのタイムアウト期間を長くする必要がある場合があります。
3.) SQL の場合。テーブル変数 ( @SecondTable
) と一時テーブル ( #SecondTable
) は 2 つの完全に異なるものです。テーブル変数と一時テーブルについては、MSDN のドキュメントを参照してください。