我看到一些代码,其中作者在删除临时表之前立即截断了临时表。有没有理由这样做?
TRUNCATE TABLE #Temp
DROP TABLE #Temp
答案 0 :(得分:3)
另一个原因是DROP TABLE
是一个完全记录的操作,所以通过先截断(从不记录),可以降低事务性日志记录开销。
答案 1 :(得分:2)
如果表格已经为空并且知道TRUNCATE比DELETE更快,那么作者可能会觉得DROP TABLE会更快。
答案 2 :(得分:1)
可能是一个傻瓜。 (不是说我很完美)。
答案 3 :(得分:1)
在非常大的临时表上,有时候先截断然后删除会更快,因为truncate只是移动一个指针。通常不需要它,因为临时表会自行丢弃。
答案 4 :(得分:1)
另一种可能性是编码器试图避免在临时表大于8MB时发生的延迟丢弃。即截断它然后放下它。我不确定SQL引擎是否会被这个愚弄,但它可能会强制同步清理。我不明白你为什么要这样做,也许是为了避免累积延迟掉落的一些问题(用于销毁的临时表)
答案 5 :(得分:0)
可能是为了查看TRUNCATE
命令是否因现有外键而引发异常?