Mysql清空表(truncate)與刪除表中數據(delete)的區別

 

爲某基於wordpress搭建的博客長久未除草,某天升級的時候發現已經被插入了幾萬條垃圾留言,若是一條條刪除那可真是累人的活。遂考慮直接進入mysql直接清空表或者刪除表中數據。mysql

本文記錄一下這2種操做模式的區別,目標對象是表wp_comments,裏面的全部留言均是垃圾留言,都可刪除。而後便有了如下2種方式(進入mysql操做界面後):sql

  1. truncate table wp_comments;
  2. delete * from wp_comments;

其中truncate操做中的table能夠省略,delete操做中的*能夠省略。這二者都是將wp_comments表中數據清空,不過也是有區別的,以下:服務器

  • truncate是總體刪除(速度較快), delete是逐條刪除(速度較慢)。
  • truncate不寫服務器log,delete寫服務器log,也就是truncate效率比delete高的緣由。
  • truncate不激活trigger(觸發器),可是會重置Identity(標識列、自增字段),至關於自增列會被置爲初始值,又從新從1開始記錄,而不是接着原來的ID數。而delete刪除之後,Identity依舊是接着被刪除的最近的那一條記錄ID加1後進行記錄。
  • 若是隻需刪除表中的部分記錄,只能使用DELETE語句配合where條件。 DELETE FROM wp_comments WHERE……

全文完。wordpress

相關文章
相關標籤/搜索