為某基于wordpress搭建的博客長久未除草债蓝,某天升級的時(shí)候發(fā)現(xiàn)已經(jīng)被插入了幾萬條垃圾留言限匣,如果一條條刪除那可真是累人的活邦危。遂考慮直接進(jìn)入mysql直接清空表或者刪除表中數(shù)據(jù)醉途。
本文記錄一下這2種操作模式的區(qū)別,目標(biāo)對象是表wp_comments跷坝,里面的所有留言均是垃圾留言浪规,均可刪除。然后便有了以下2種方式(進(jìn)入mysql操作界面后):
- truncate table comments;
- delete* from comments;
其中truncate操作中的table可以省略探孝,delete操作中的*可以省略。這兩者都是將comments表中數(shù)據(jù)清空誉裆,不過也是有區(qū)別的顿颅,如下:
- truncate是整體刪除(速度較快), delete是逐條刪除(速度較慢)足丢。
- truncate不寫服務(wù)器log粱腻,delete寫服務(wù)器log,也就是truncate效率比delete高的原因斩跌。
- truncate不激活trigger(觸發(fā)器)绍些,但是會重置Identity(標(biāo)識列、自增字段)耀鸦,相當(dāng)于自增列會被置為初始值柬批,又重新從1開始記錄啸澡,而不是接著原來的ID數(shù)。而delete刪除以后氮帐,Identity依舊是接著被刪除的最近的那一條記錄ID加1后進(jìn)行記錄嗅虏。
- 如果只需刪除表中的部分記錄,只能使用DELETE語句配合where條件上沐。 DELETE FROM wp_comments WHERE……
摘自:http://blog.is36.com/mysql_difference_of_truncate_and_delete/