【问题标题】:TRUNCATE v/s DROP [duplicate]TRUNCATE vs DROP [重复]
【发布时间】:2019-12-05 23:43:22
【问题描述】:

我正在阅读 DBMS 概念,我对 TRUNCATEDROP 有一些困惑。我知道TRUNCATE 不影响结构,但还有什么其他区别?什么时候使用TRUNCATE 更好,什么时候使用DROP 更好?

在某些网站上写到截断更快,但没有人解释原因。

【问题讨论】:

  • Drop 会全部删除,就像你清空硬盘一样。截断它就像从表名中删除一样。

标签: mysql sql database rdbms


【解决方案1】:

有很多关于两者区别的信息(请参阅here)。但是,对于您关于性能的问题的第二部分-您不必担心截断与丢弃。原因是它更多地是关于您期望从截断与丢弃中获得的功能。当您不再打算使用该表时,您会“放弃”。当您只希望表定义完整时,您“截断”,您只想快速删除表数据。感知到的性能差异可能来自数据库中的实现细节(有时可能是像this 这样的错误)。

【讨论】:

    【解决方案2】:

    TRUNCATE 删除表的所有内容,但保持表的结构不变。除了数据,表还有索引、约束、触发器和分区等。

    DROP 删除表和相关元数据,包括索引、约束和触发器。

    当您想用新数据重新加载表时,您可以使用TRUNCATE。当您不再需要该表时,请使用 DROP

    第三种可能性是DELETE 删除所有行。虽然最终结果和TRUNCATE一样,但在大多数数据库中,这会记录每一行删除并触发删除触发器,因此它比TRUNCATE更昂贵。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-06
      • 2013-11-03
      • 1970-01-01
      • 2018-05-05
      • 2015-06-20
      • 2021-06-12
      • 1970-01-01
      相关资源
      最近更新 更多