扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
truncate
创新互联长期为近1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为芙蓉企业提供专业的成都做网站、网站设计,芙蓉网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。
table
在功能上与不带
where
子句的
delete
语句相同:二者均删除表中的全部行。但
truncate
table
比
delete
速度快,且使用的系统和事务日志资源少。
delete
语句每次删除一行,并在事务日志中为所删除的每行记录一项。
truncate
table
通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
truncate,delete,drop放在一起比较:
truncate
table:删除内容、释放空间但不删除定义。
delete
table:删除内容不删除定义,不释放空间。
drop
table:删除内容和定义,释放空间。
1、truncate在各种表上无论是大的还是小的都非常快。如果有rollback命令delete将被撤销,而truncate则不会被撤销。
2、truncate是一个ddl语言,向其他所有的ddl语言一样,他将被隐式提交,不能对truncate使用rollback命令。
3、truncate将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过truncate操作后的表比delete操作后的表要快得多。
4、truncate不能触发任何delete触发器。
5、不能授予任何人清空他人的表的权限。
6、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。
7、不能清空父表。
把一列设置为unused,这一列是无法恢复的(确切的说是其所包含的数据),除非是通过之前的备份文件来进行恢复,他和使用drop来删除一样,区别在于如果在高峰时期你用drop来删除某些列会大大的影响数据库的性能,而如果将某些列先设为无用,那么这些列在往后的查询中不会显示出来,等到合适的时间再使用drop来将这些被设为无用的列删除,这样既达到了删除某些列的目的,又不会在高峰时期影响数据库的性能。
可以用 ALTER TABLE DROP PARTITION 来删除分区,元数据和数据将被一并删除。
全删除
ALTER TABLE yourTable DROP PARTITION partionName1;
清数据
ALTER TABLE yourTable TRUNCATE PARTITION partionName1;
语句虽简单、操作需谨慎。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流