zoukankan      html  css  js  c++  java
  • drop,delete及truncate区别

    1.处理对象

    TRUNCATE只能对table;
    DELETE可以是table和view;
    TRUNCATE 和DELETE只删除数据, DROP则删除整个表(结构和数据)。

    2.处理速度

    一般而言,drop > truncate > delete
    延伸知识:为什么TRUNCATE速度快?
    Truncate table 表名 速度快,而且效率高,因为:
    truncate table 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放

    3.是否支持回滚

    DELETE语句为DML(data maintain Language),这个操作会被放到 rollback segment中,所以支持回滚,若是事务提交后才生效;如果有相应的 tigger,执行的时候将被触发。
    DROP、TRUNCATE是DLL(data define language),操作立即生效,原数据不放到 rollback segment中,不能回滚。

    4.使用场景不同

    在没有备份情况下,谨慎使用 drop 与 TRUNCATE。
    要删除部分数据行采用DELETE且注意结合WHERE来约束影响范围。回滚段要足够大。
    要删除表用DROP。
    若想保留表而将表中数据删除,如果于事务无关,用TRUNCATE即可实现。如果和事务有关,或是想触发trigger,还是用DELETE。

    5.TRUNCATE TABLE 与DROP TABLE区别:

    TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。
    如果想保留标识计数值,请改用 DELETE。
    如果要删除表定义及其数据,请使用 DROP TABLE 语句。

    参考:https://www.cnblogs.com/zhizhao/p/7825469.html

  • 相关阅读:
    HTTP客户端识别与Cookie机制
    javascript模式之模块模式
    js类式继承模式学习心得
    关于html自闭合标签要不要加空格和斜杠的问题?
    分享两件有趣的事情
    PS Web切图界面设置
    这是什么
    关于前后端分离我的理解
    模块化方案esl以及amd的依赖方式
    node 内存管理相关
  • 原文地址:https://www.cnblogs.com/dLarger/p/12955167.html
Copyright © 2011-2022 走看看