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