删除表和截断表命令之间的区别是什么?
此问题提交于2004年11月23日
表删除包括表的定义和关联对象(规则、索引、约、触发器、主键,等)。很明显,一旦表被删除,那么表中包含的所有的数据行都会被一同删除。
truncate <table>命令则仅仅删除了表中所有的数据行。表的结构和所有的索引仍然继续存在,直到你输入删除表的命令(如上所述)。绑定到列上的规则、默认值、约束仍然继续绑定,并且触发器也仍然起作用。
截断表命令还会回收所有索引的分配页。
截断表的执行速度与不带where子句的delete(删除)命令相同,甚至比它还要快。delete(删除) 一次删除一行数据,并且将每一行被删除的数据都作为一个事务记录日志;而truncate (截断)表则回收整个数据页,只记录很少的日志项。delete(删除)和truncate(截断)都会回收被数据占用的空间,以及相关的索引。只有表的拥有者可以截断表。
本文探讨了在数据库管理中,使用DELETE命令删除表与使用TRUNCATE TABLE命令清空表的区别。DELETE不仅删除数据,还移除表定义及关联对象;而TRUNCATE仅清除数据,保留表结构及相关设置。
4498

被折叠的 条评论
为什么被折叠?



