你为什么要在删除临时表之前立即截断?

时间:2010-04-09 15:25:20

标签: sql-server-2005 tsql temp-tables

我看到一些代码,其中作者在删除临时表之前立即截断了临时表。有没有理由这样做?

TRUNCATE TABLE #Temp
DROP TABLE #Temp

6 个答案:

答案 0 :(得分:3)

另一个原因是DROP TABLE是一个完全记录的操作,所以通过先截断(从不记录),可以降低事务性日志记录开销。

答案 1 :(得分:2)

如果表格已经为空并且知道TRUNCATE比DELETE更快,那么作者可能会觉得DROP TABLE会更快。

答案 2 :(得分:1)

可能是一个傻瓜。 (不是说我很完美)。

答案 3 :(得分:1)

在非常大的临时表上,有时候先截断然后删除会更快,因为truncate只是移动一个指针。通常不需要它,因为临时表会自行丢弃。

答案 4 :(得分:1)

另一种可能性是编码器试图避免在临时表大于8MB时发生的延迟丢弃。即截断它然后放下它。我不确定SQL引擎是否会被这个愚弄,但它可能会强制同步清理。我不明白你为什么要这样做,也许是为了避免累积延迟掉落的一些问题(用于销毁的临时表)

答案 5 :(得分:0)

可能是为了查看TRUNCATE命令是否因现有外键而引发异常?