前幾天在做乙個功能,因為之前往資料庫裡新增了不正確的資料,所以想要將表裡的資料刪除一下。腦袋裡想也沒想,直接就用了個
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將重新設定高...