共计 770 个字符,预计需要花费 2 分钟才能阅读完成。
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 & drop & delete
- truncate & drop 是 DDL 语句,执行后无奈回滚;delete 是 DML 语句,可回滚。
- truncate 只能作用于表;delete & drop 可作用于表、视图等。
- truncate 会清空表中的所有行,但表构造及其束缚、索引等放弃不变;drop 会删除表的构造及其所依赖的束缚、索引等。
- truncate 会重置表的自增值;delete 不会。
- truncate 不会激活与表无关的删除触发器;delete 能够。
- truncate 后会使表和索引所占用的空间会复原到初始大小;delete 操作不会缩小表或索引所占用的空间,drop 语句将表所占用的空间全开释掉。
truncate 应用场景
面临大表时,如果想删除所有数据能够用 truncate;如果和事务无关,或者想触发 trigger,还是用 delete;如果是整理表外部的碎片,能够用 truncate 而后再从新插入数据
truncate 注意事项
- truncate 无奈通过 binlog 回滚
- truncate 会清空所有数据且执行速度很快
- truncate 不能对有外键束缚援用的表应用
- truncate 须要 drop 权限,不倡议给账号 drop 权限
- truncate 前肯定要再三查看确认,最好提前备份下表数据
正文完