• 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

  • 相关阅读:
    jQuery常用方法总结
    如何让div显示在最上层(页面含Flash)
    Flex分页控件
    C#利用SharpZipLib解压或压缩文件夹实例操作
    3D 穿梭效果?使用 UWP 也能搞定
    [WPF] 制作一个彩虹按钮
    [WPF] 仅用 Rectangle 实现圆柱形进度条
    [WPF] 玩玩彩虹文字及动画
    Skipping Windows Azure Startup Tasks When Running in the Emulator
    [转] Asp.net mvc 3 beta 新特性介绍
  • 原文地址:https://www.cnblogs.com/dLarger/p/12955167.html
Copyright © 2020-2023  润新知