truncate table與delete區(qū)別
來(lái)源:程序員人生 發(fā)布時(shí)間:2014-11-13 09:09:06 閱讀次數(shù):3294次
truncate table需要drop table權(quán)限,它是完全清空1張表。
從邏輯上看,truncate table同delete 1樣,或是drop table +create table1樣。使用truncate table刪除全表數(shù)據(jù),要比delete要快。使用truncate table清空數(shù)據(jù),不能進(jìn)行回滾,且不受表間外鍵束縛限制。
truncate是DDL語(yǔ)句,而且delete是DML語(yǔ)句,二者區(qū)分以下:
1.truncate 是郵drop table+create table ,比使用delete1行行刪除數(shù)據(jù)要快很多,特別是清空大數(shù)據(jù)的表。
2.truncate是1種藏匿提交,所以不能進(jìn)行回滾。
3.若當(dāng)前表有外鍵束縛,truncate table 可以清空表中的所有數(shù)據(jù),不受外鍵束縛限制。
4.使用truncate table將自增ID置零,delete則不會(huì)。
5.在使用分區(qū)表時(shí),截?cái)啾肀4娣謪^(qū);也就是說(shuō),數(shù)據(jù)和索引文件刪除并重新創(chuàng)建,在分區(qū)定義(.par)文件不受影響。
6.TRUNCATE TABLE語(yǔ)句不調(diào)用刪除觸發(fā)器。
參考:
http://dev.mysql.com/doc/refman/5.7/en/truncate-table.html
http://dev.mysql.com/doc/refman/5.6/en/optimizing-innodb-ddl-operations.html
生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)