• 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清空表快得多 

  • 相关阅读:
    天真的误会
    Unity3D笔记
    http纪要
    JQuery中ajax错误处理之页面跳转
    php代码片段
    3D游戏相关笔记
    Javascript笔记
    PHP对观察者模式的支持
    为什么要使用多线程
    死锁和活锁
  • 原文地址:https://www.cnblogs.com/flysand/p/11383997.html
Copyright © 2020-2023  润新知