摘要: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 資料庫設計與應用 博碩文化 (版主心得穿插在其中)