2

一時テーブルを削除する直前に作成者が一時テーブルを切り捨てたコードがいくつかあります。これを行う理由はありますか?

TRUNCATE TABLE #Temp
DROP TABLE #Temp
4

6 に答える 6

3

Another reason is that a DROP TABLE is a fully logged operation, so by truncating first (which is never logged) you lower transactional logging overhead.

于 2010-04-10T14:43:57.090 に答える
2

おそらく作成者は、テーブルがすでに空で、TRUNCATE が DELETE よりも高速であることを知っていれば、DROP TABLE の方が高速であるという印象を受けていたのでしょう。

于 2010-04-09T15:37:13.040 に答える
1

非常に大きな一時テーブルでは、切り捨ては単にポインターを移動するだけなので、最初に切り捨ててからドロップする方が速い場合があります。一時テーブルは自然に削除されるため、通常は必要ありません。

于 2010-04-10T00:41:09.473 に答える
1

ナックルヘッドかもしれません。(私が完璧だというわけではありません)。

于 2010-04-09T15:48:35.500 に答える
1

もう 1 つの可能性は、一時テーブルが 8 MB を超える場合に発生する遅延ドロップをコーダーが回避しようとしている可能性があります。つまり、切り捨ててからドロップします。これによって SQL エンジンがだまされるかどうかはわかりませんが、同期クリーンアップが強制される可能性があります。遅延ドロップの蓄積に関する問題を回避するために、なぜこれを行う必要があるのか​​ わかりません(破棄のための一時テーブル)

于 2011-11-11T01:46:13.887 に答える
0

おそらく、TRUNCATE既存の外部キーが原因でコマンドが例外をスローするかどうかを確認しますか?

于 2010-04-09T15:28:10.523 に答える