截断

TRUNCATE 是一种 DDL(数据定义语言)命令,因此它与 DELETE(数据操作语言,DML,命令)之间存在显着差异。虽然 TRUNCATE 可以快速从数据库中删除大量记录,但应该理解这些差异,以便确定在你的特定情况下使用 TRUNCATE 命令是否合适。

  • TRUNCATE 是数据页操作。因此,执行 TRUNCATE 操作时,不会触发与表关联的 DML 触发器(ON DELETE)。虽然这将为大量删除操作节省大量时间,但你可能需要手动删除相关数据。
  • TRUNCATE 将释放已删除行使用的磁盘空间,DELETE 将释放空间
  • 如果要截断的表使用标识列(MS SQL Server),则 TRUNCATE 命令将重置种子。这可能导致参考完整性问题
  • 根据现有的安全角色和正在使用的 SQL 的变体,你可能没有执行 TRUNCATE 命令所需的权限