前言:性能
当咱们想要清空某张表时,每每会使用truncate语句。大多时候咱们只关心可否知足需求,而不去想这类语句的使用场景及注意事项。本篇文章主要介绍truncate语句的使用方法及注意事项。code
truncate的做用是清空表或者说是截断表,只能做用于表。truncate的语法很简单,后面直接跟表名便可,例如: truncate table tbl_name
或者 truncate tbl_name
。索引
执行truncate语句须要拥有表的drop权限,从逻辑上讲,truncate table相似于delete删除全部行的语句或drop table而后再create table语句的组合。为了实现高性能,它绕过了删除数据的DML方法,所以,它不能回滚。尽管truncate table与delete类似,但它被分类为DDL语句而不是DML语句。事务
上面说过truncate与delete,drop很类似,其实这三者仍是与很大的不一样的,下面简单对比下三者的异同。table
经过前面介绍,咱们很容易得出truncate语句的使用场景,即该表数据彻底不须要时能够用truncate。若是想删除部分数据用delete,注意带上where子句;若是想删除表,固然用drop;若是想保留表而将全部数据删除且和事务无关,用truncate便可;若是和事务有关,或者想触发trigger,仍是用delete;若是是整理表内部的碎片,能够用truncate而后再从新插入数据。权限
不管怎样,truncate表都是高危操做,特别是在生产环境要更加当心,下面列出几点注意事项,但愿你们使用时能够作下参考。语法