【发布时间】:2014-06-05 19:07:19
【问题描述】:
所以我一直在研究有关使用 TRUNCATE 与 DROP 的 SQL 标准。我的公司正在尝试确定我们是否应该在 DROP 之前使用 TRUNCATE 作为标准编码约定,或者我们是否应该只使用 DROP。通常,我们总是使用 TRUNCATE 和 DROP 而不仅仅是 DROP。
根据这个先前回答的问题,看起来没有理由同时使用两者: https://dba.stackexchange.com/questions/4163/why-use-both-truncate-and-drop
上面的链接还解决了使用 TRUNCATE 的问题,存在不必要的开销。
但是,由于似乎很多人仍然同时使用 TRUNCATE 和 DROP 而不是只使用 DROP,那么在 DROP 之前使用 TRUNCATE 有什么好处??
【问题讨论】:
-
使用 TRUNCATE 将删除除架构之外的所有行...使用 DROP 两者都消失了。那为什么要做额外的步骤。只需直接 DROP 表,这就是引入 DROP 的原因。 Morover,在 DROP 之前使用 TRUNCATE 根本不是任何标准......可能是一个低标准。
-
@Rahul 。 . .我认为从历史上看,
DROP首先存在,TRUNCATE是作为一种效率机制被引入的,用于删除表中的所有行而不记录它们。否则,我同意你的评论。 -
如果我错了,请纠正我。您可以在
DROP之后回滚,但在TRUNCATE之后无法回滚。 -
@LucM,虽然这是理论上的,但在某些地方我有红色(包括 OP 帖子中的链接),如果在 TRANS 块内使用,TRUNCATE/DROP 都可以回滚。
-
如果您了解 truncate 和 drop 在内部是如何工作的,我看不出在 drop 之前截断如何改进事情。你在这里的想法是什么? Drop 只是释放所有内容。如何提高效率?
标签: sql temp-tables truncate drop-table