MySQL中清空表和截断表的区别(新手入门)
生活随笔
收集整理的這篇文章主要介紹了
MySQL中清空表和截断表的区别(新手入门)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
清空表和截斷表
清空表:delete from users;
清空表只是清空表中的邏輯數據,但是物理數據不清除,如主鍵值、索引等不被清除,還是原來的值。
截斷表:truncate table users;
截斷表可以用于刪除表中 的所有數據。截斷表命令還會回收所有索引的分配頁。截斷表的執行速度與不帶where子句的delete(刪除)命令相同,甚至比它還要快。 delete(刪除)一次刪除一行數據,并且將每一行被刪除的數據都作為一個事務記錄日志;而truncate (截斷)表則回收整個數據頁,只記錄很少的日志項。delete(刪除)和truncate(截斷)都會回收被數據占用的空間,以及相關的索引。只有表的 擁有者可以截斷表。
另外,truncate表之后,如果有自動主鍵的話,會恢復成默認值。
主要區別如下:
truncate是整體刪除(速度較快), delete是逐條刪除(速度較慢)。
truncate不寫服務器log,delete寫服務器log,也就是truncate效率比delete高的原因。
truncate不激活trigger(觸發器),但是會重置Identity(標識列、自增字段),相當于自增列會被置為初始值,又重新從1開始記錄,而不是接著原來的ID數。
而delete刪除以后,Identity依舊是接著被刪除的最近的那一條記錄ID加1后進行記錄。
總結
以上是生活随笔為你收集整理的MySQL中清空表和截断表的区别(新手入门)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: <load-on-startup>1</
- 下一篇: 语音增强效果的测试方法