zoukankan      html  css  js  c++  java
  • 数据库中truncate与delete的区别与联系

    昨天被问到truncate与delete的区别,truncate没用过,回去百度了一下,才知道还有这个一种语句。

    truncate table命令将快速删除数据表中的所有记录(保留数据表结构)。这种快速删除与delete from 数据表的删除全部数据表记录不一样,delete命令删除的数据将存储在系统回滚段中,需要的时候,数据可以回滚恢复,而truncate命令删除的数据是不可以恢复的。咱们做一个测试:

    1、建一个带有自增字段的表,加入100万数据

    2、分别用TRUNCATE和DELETE删除全部数据(分别执行DELETE FROM `TABLENAME`; TRUNCATE FROM `TABLENAME`;DROP FROM `TABLENAME`;)

    3、然后再向表里插入一条数据

    最直观是:

    1、TRUNCATE TABLE是非常快的

    2、TRUNCATE之后的自增字段从头开始计数了,而DELETE的仍保留原来的最大数值

    相同点:

      truncate和不带where子句的delete, 以及drop都会删除表内的数据。

    不同点:

    1、truncate和delete只删除数据不删除表的结构,而drop语句不仅删除全部数据还删除了表的结构; 

    2、delete操作会放到rollback segement中,事务提交之后才生效也就是可以回滚。而truncate,drop操作之后原数据不放到rollback segment中,不能回滚

    3、delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动,也就是自增ID不变化

    4、速度,一般来说: drop>; truncate >; delete

  • 相关阅读:
    java实例:一个简单的图书管理程序
    教你如何一键退出USB设备(转)
    四种方法处理“无法停止通用卷设备”(转)
    简单数据恢复菜鸟教程 (转)
    安装flash纠结
    java:文本I/O实例
    数据结构之链表(1)
    win7屏幕录制软件psr.exe使用教程(转)
    SQL:基本知识
    .Net Micro Framework研究—FAT文件系统实现探索
  • 原文地址:https://www.cnblogs.com/liqiu/p/3633214.html
Copyright © 2011-2022 走看看