truncate table與delete區別,truncatetable
truncate table需要drop table許可權,它是完全清空一張表。從邏輯上看,truncate table同delete 一樣,或是drop table +create table一樣。使用truncate table刪除全表資料,要比delete要快。使用truncate table清空資料,不能進行復原,且不受表間外鍵約束限制。truncate是DDL語句,而且delete是DML語句,兩者區別如下:1.truncate 是郵drop table+create table ,比使用delete一行行刪除資料要快得多,特別是清空大資料的表。2.truncate是一種隱匿提交,所以不能進行復原。3.若當前表有外鍵約束,truncate table 可以清空表中的所有資料,不受外鍵約束限制。4.使用truncate table將自增ID置零,delete則不會。5.在使用分區表時,截斷表儲存分區;也就是說,資料和索引檔案刪除並重新建立,在分區定義(.par)檔案不受影響。6.TRUNCATE TABLE語句不調用刪除觸發器。
參考:
http://dev.mysql.com/doc/refman/5.7/en/truncate-table.htmlhttp://dev.mysql.com/doc/refman/5.6/en/optimizing-innodb-ddl-operations.html
truncate table 與delete * from的不同
區別主要兩個1。 Truncate 是整體刪除, delete是逐條刪除2. truncate不寫伺服器log,delete寫伺服器log,這就是為什麼truncate要快過delete 所以,影響有:1。 truncate 快2。 truncate不啟用 trigger3。 truncate 重設 Identity
問TRUNCATE TABLE 與 DELETE在刪除整個表的所有記錄時的不同
1.DELETE
・DML語言
・可以回退
・可以有條件的刪除
DELETE FROM 表名
WHERE 條件
2.TRUNCATE TABLE
・DDL語言
・無法回退
・預設所有的表內容都刪除
・刪除速度比delete快。
TRUNCATE TABLE 表名