美文网首页
数据库delete/drop/truncate的区别

数据库delete/drop/truncate的区别

作者: 刘小白DOER | 来源:发表于2023-06-15 22:23 被阅读0次

    最近遇到一个数据库删除数据的问题。删除历史数据时,因为完全删除导致磁盘空间偏大,于是总结一下delete、drop、truncate的区别。

    总的来说,delete是把目录撕了,truncate是把书的内容撕下来烧了,drop是把书烧了。

    truncate保留数据表结构,drop是删除数据以及表结构。在需要删除部分数据库时,使用delete,此时表结构还存在,数据已被删除,自增列计数也并不会从头开始,但遇到大量数据的话,遗留数据会导致磁盘空间问题,delete操作以后使用 optimize table table_name 会立刻释放磁盘空间。delete from table_name删除表的全部数据,对于MyISAM 会立刻释放磁盘空间,InnoDB 不会释放磁盘空间;对于delete from table_name where xxx 带条件的删除, 不管是InnoDB还是MyISAM都不会释放磁盘空间;

    truncate会删除全部数据,保留数据表结构,自增列计数从1开始。速度比delete快,可以理解为drop table然后再create table。drop 删除数据以及表结构,立刻释放磁盘空间 ,不管是 InnoDB 和 MyISAM。

    那么在用法上面,delete删除部分数据时使用,但是注意优化optimize 。历史数据删除,清理表空间的话使用truncate,不再使用此表就用drop。

相关文章

网友评论

      本文标题:数据库delete/drop/truncate的区别

      本文链接:https://www.haomeiwen.com/subject/veglydtx.html