zoukankan      html  css  js  c++  java
  • truncate delete

    参考:https://www.cnblogs.com/lanymy/articles/2335291.html 

    truncate table   清空表数据  但不会删除索引  只是删除索引对应的row数据

    delete from table where 删除指定数据  逐行删除,比清空表慢  会把索引对应的数据删掉,索引保留

    另:

    truncate 删除数据 自增列 自增序号重置

    delete 删除数据 自增列 自增序号不重置

    如:

    字段id为自增列      共10条数据,即id最大值为10 

    使用truncate清空表后再插入,id=1

    使用delete删除表后再插入,id=11

     truncate  清空表数据 并回收数据页磁盘空间

    delete  清空表数据  不回收磁盘空间

    如:表占用4G磁盘空间,分别清空表后

    重新插入数据时,truncate从磁盘空间开始插入,插入多少就有多少数据,delete后原来4g的空间不变,插入时是在这4g空间随机插入 ,即可能插入100K数据,但是占用空间还是4G,有很多碎片在里面   查询时,truncate后新插入数据的表 查询的是100K数据,delete后的表查询的是4G的数据,原则上会效率更慢

    另外:truncate为ddl操作,delete为dml操作,所有dml操作原则上都支持回滚,因此delete会记录大量操作日志,用于删除错误后的数据回滚,truncate直接清空数据,无法回滚  因此truncate比delete清空表快得多 

  • 相关阅读:
    RandomAccessFile类
    IO_ObjectOutputStream(对象的序列化)
    IO流_文件切割与合并(带配置信息)
    IO流_文件切割与合并
    IO流_SequenceInputStream(序列流)
    10-stack
    9-queue
    16-两种方法全排列
    8-全排列next_permutation
    15-Call to your teacher(有向图的连通判断)
  • 原文地址:https://www.cnblogs.com/flysand/p/11383997.html
Copyright © 2011-2022 走看看