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

  • 相关阅读:
    Linux架构浅谈
    SP3精密星历简介
    sprintf的用法
    插值 回归 拟合 逼近的区别
    Linux grep命令
    看我如何下载韩寒博客文章笔记
    多线程下载
    网络爬虫python教程
    爬虫——博客实例
    Android Studio安装
  • 原文地址:https://www.cnblogs.com/flysand/p/11383997.html
Copyright © 2011-2022 走看看