delete和Truncate的較量

2021-07-08 10:16:52 字數 899 閱讀 9340

前幾天在做乙個功能,因為之前往資料庫裡新增了不正確的資料,所以想要將表裡的資料刪除一下。腦袋裡想也沒想,直接就用了個

delete

,由於資料量真的很大,足足刪除了將近半個小時,這時候,我就知道自己錯了。資料沒有刪除完,因為不願意等了,所以直接又取消了。但是我又查詢了一下表裡的資料,這時候資料已經清空了。資料刪除了也沒有執行

commit。

所有又新增新資料,新增了

32條,執行了個查詢語句,這

32條語句足足用了

25.983

秒,原因很明顯,由於沒有提交事務,而且用的

delete

語句,所有沒有真正刪除,寫到日誌裡,還可以回滾。 明明

32條資料,缺用了這麼長時間。

解決辦法:使用

truncate

語句,全部刪除,將隱藏在日誌中的那些資料也全部清除。 那麼

delete

語句和truncate

語句有什麼區別呢?

delete

trcunate

語法delete from tablename

truncate table tablename

執行速度慢快

刪除形式

一條一條刪除

一次性刪除整個頁

所用的日誌空間多少

是否可以加條件

可以加條件

不可以加條件

資料庫的

sql語句

還有很多,我們不能只侷限於使用

select

、update

、delete

、insert

,還有很多語句,我們都要學會使用,才能給我們的工作帶來效率,給我們的程式帶來效率。工作中多多積累經驗,及時乙個簡單的

sql語句,也是我們寶貴的財富。

truncate和delete和drop的異同

相同點 truncate 和不帶 where 子句的 delete,以及 drop 都會刪除表內的資料 不同點 1.truncate 和 delete 只刪除資料不刪除表的結構 定義 drop 語句將刪除表的結構被依賴的約束 constrain 觸發器 trigger 索引 index 依賴於該錶的...

Truncate 和 Delete 的區別

truncate操作同沒有where條件的delete操作十分相似,只是把表裡的資訊全部刪除。主要區別如下 1.無論truncate 大表還是小表速度都非常快。delete 要產生回滾資訊來滿足回滾需求,而 truncate 是不產生的。2.truncate 是ddl 語句進行隱式提交,不能進行回滾...

TRUNCATE和DELETE的區別

1 truncate在各種表上無論是大的還是小的都非常快。如果有rollback命令delete將被撤銷,而truncate則不會被撤銷。2 truncate是乙個ddl語言,向其他所有的ddl語言一樣,他將被隱式提交,不能對truncate使用rollback命令。3 truncate將重新設定高...