Mysql delete from table 和 truncate table 的区别
标签搜索
侧边栏壁纸
  • 累计撰写 6 篇文章
  • 累计收到 43 条评论

Mysql delete from table 和 truncate table 的区别

xiaodong
2020-06-28 / 3 评论 / 887 阅读 / 正在检测是否收录...
  • truncate属于DDL即数据控制语言而非DML数据操作语言,所做操作不能回滚。
  • truncate是删除整张表后再重建,对比delete操作逐行删除数据效率高,特别是大数据表。
  • truncate操作会执行隐式的commit,所以不能回滚。
  • 如果会话持有活动表锁,则不能执行 truncate 操作。
  • InnoDB或者NDB表有字段作为外键被其他表引用时,对该表执行truncate操作会失败,表内字段间的外键关联不影响此操作。
  • truncate操作不会返回删除记录数,操作成功提示的“0 rows affected”无实际意义。
  • 只要表格式文件tablename.frm是有效的,那么即使数据或者索引文件损坏了也能通过truncate操重新创建空表。
  • 执行truncate操作后,表中如果有自增序列字段的话,自增序列会重置回初始值。即使对于MyISAM和InnoDB也是如此,它们通常不重用序列值。
  • 对分区表执行truncate操作的话,表的数据和索引文件会删除重建,但是表分区定义文件则不受影响。
  • truncate操作不会触发ON DELETE触发器。

原文参见 官方文档

1

评论 (3)

取消
  1. 头像
    gxnbbppchh
    Windows 10 · Google Chrome

    叼茂SEO.bfbikes.com

    回复
  2. 头像
    aavoucuooc
    Windows 10 · Google Chrome

    想想你的文章写的特别好www.jiwenlaw.com

    回复
  3. 头像
    iftnoohbiq
    Windows 10 · Google Chrome

    哈哈哈,写的太好了https://www.cscnn.com/

    回复