前言:性能
當咱們想要清空某張表時,每每會使用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表都是高危操做,特別是在生產環境要更加當心,下面列出幾點注意事項,但願你們使用時能夠作下參考。語法