TRUNCATE VS DELETE

摘要:TRUNCATE VS DELETE

Basic syntax in DELETE and TRUNCATE
------------------------------------------------------------------
DELETE [FROM] table_or_view_name
WHERE search_condition

TRUNCATE table_or_view_name

table_or_view_name formation list:

(1)server_name.database_name.schema_name
(2)database_name.[schema_name].table_or_view_name
(3)schema_name.table_or_view_name
(4)table_or_view_name

The default schema_name is dbo

-------------------------------------------------------------------

DELETE table or TRUNCATE table  皆是用來刪除資料。

TRUNCATE 直接清除 data file ( 真正儲存資料的地方)。 <也因此會重設 identity,return 回初始值>

DELETE (DML) 更動 log file後,log file 再去 refresh data file。

由此可見,TRUNCATE 會比 DELETE 來的更有效率,不過使用 TRUNCATE 之後要 backup database completely,

否則出意外 recovery 的時候,一堆資料又還是會跑出來。

<以前在測試時,有些表的欄位要設成 identity,直接選取刪掉後編號值就愈來愈大,真煩>

知道 TRUNCATE會重設 identit以後,就少用 DELETE 了吧。

不過 TRUNCATE 也不能亂下,因為死無對證 ( log file  沒紀錄),要是清錯就 GG 了。


部份截自 SQL Server2008 資料庫設計與應用  博碩文化  (版主心得穿插在其中)