【发布时间】:2019-12-05 23:43:22
【问题描述】:
我正在阅读 DBMS 概念,我对 TRUNCATE 和 DROP 有一些困惑。我知道TRUNCATE 不影响结构,但还有什么其他区别?什么时候使用TRUNCATE 更好,什么时候使用DROP 更好?
在某些网站上写到截断更快,但没有人解释原因。
【问题讨论】:
-
Drop 会全部删除,就像你清空硬盘一样。截断它就像从表名中删除一样。
我正在阅读 DBMS 概念,我对 TRUNCATE 和 DROP 有一些困惑。我知道TRUNCATE 不影响结构,但还有什么其他区别?什么时候使用TRUNCATE 更好,什么时候使用DROP 更好?
在某些网站上写到截断更快,但没有人解释原因。
【问题讨论】:
TRUNCATE 删除表的所有内容,但保持表的结构不变。除了数据,表还有索引、约束、触发器和分区等。
DROP 删除表和相关元数据,包括索引、约束和触发器。
当您想用新数据重新加载表时,您可以使用TRUNCATE。当您不再需要该表时,请使用 DROP。
第三种可能性是DELETE 删除所有行。虽然最终结果和TRUNCATE一样,但在大多数数据库中,这会记录每一行删除并触发删除触发器,因此它比TRUNCATE更昂贵。
【讨论】: