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

  • 相关阅读:
    交易盈利核心
    tbquant 两个画线函数的说明
    胜率40% 盈亏2:1 交易策略源码
    Apache是如何运作的
    JSON_UNESCAPED_UNICODE的作用与理解
    Python的装饰器是什么?
    Python中的浅拷贝、深拷贝和赋值之间有什么区别?
    Python面试题——基础篇
    GD32F30x_ADC电压采集(规则并行+DMA方式)
    GD32F30x_定时器输出比较模式输出方波(DMA方式)
  • 原文地址:https://www.cnblogs.com/dLarger/p/12955167.html
Copyright © 2011-2022 走看看