• delete和truncate区别


     相同之处:truncate在功能上与不带WHERE子句的delete 语句相同:二者均删除表中的全部行。小心使用truncate,删除后就没有了

    1、delete : 删除"表格记录"会把操作记录在日志中,可以通过事务回滚来恢复删除的数据。

       truncate :删除"表格记录"不可恢复 。

    2、delete :每次删除一行,并在事务日志中为所删除的每行记录一项。

        truncate  :过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

      所以truncate 比delete速度快

    3、 delete:删除内容,不删除定义,释放空间
      truncate :删除内容,不删除定义,不释放空间。

    4、delete:语句不影响表所占用的extent, 高水线(high w2atermark)保持原位置不动 
        truncate: 语句缺省情况下将空间释放到 minextents个 extent,除非使用reuse  storage;   truncate会将高水线复位(回到最开始).

    想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.

    想删除表,当然用drop

    想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete.

  • 相关阅读:
    使用Skaffold一键将项目发布到Kubernetes
    线性代数回头看——线性方程组
    Python 函数 初学者笔记
    Python 用户输入&while循环 初学者笔记
    Python If&字典 初学者笔记
    Python 变量&列表 初学者笔记
    SQL 常见优化指南
    垃圾回收机制
    MySQL 前缀索引
    MySQL 常用优化
  • 原文地址:https://www.cnblogs.com/fwqblogs/p/6636922.html
Copyright © 2020-2023  润新知