SQL中truncate table和delete的区别

 我来答
Baby_原來
2017-07-26 · TA获得超过3402个赞
知道大有可为答主
回答量:1535
采纳率:94%
帮助的人:505万
展开全部
  1. Truncate Table 表名和不带WHERE的Delete 表名功能相同,都是删除表中的所有行,但是TRUNCATE TABLE比DELETE快,而且TRUNCATE TABLE使用的系统和事务日志资源少。

  2. DELETE语句每删除一行,都在事务日志中为所删除的每行记录一项;

  3. TRUNCATE TABLE通过释放存储表数据所用的数据页来删除数据,并且只事务日志中记录页的释放。

  4. 对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 Where 子句的 Delete 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。 

    TRUNCATE TABLE 不能用于参与了索引视图的表。 

  5. truncate在各种表上无论是大的还是小的都非常快。如果有rollback命令,delete

  6. 将会被撤销,而truncate不会被撤销。

  7. truncate是一个ddl语言,向其他所有的dll语言一样,被隐式的提交,不能对truncate

  8. 使用rollback命令

  9. truncate将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时。进过

  10. truncate操作后的表比delete操作后的表要快的多。

  11. truncate不能触发任何delete触发器

  12. 不能授予任何人清空他人的表的权限

  13. 当表被清空后,表和表的索引将重新设置成初始大小,而delete不能。

  14. 不能清空父表。


推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式