首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 大量資料有條件刪除高效策略:插入保留資料再 TRUNCATE

     編輯:關於SqlServer

直接 DELETE 大量資料會產生大量記錄檔、佔用 Rollback Segment、速度極慢。若需條件刪除(如保留近期資料),最佳策略:將要保留的資料 SELECT INTO 新表 → TRUNCATE TABLE 清空原表(不記錄檔、瞬間完成) → 重新命名新表取代原表。附完整 T-SQL 範例。

操作步驟

-- 1. 將保留資料複製到新表(SELECT INTO 記錄較少)
SELECT * INTO Table2 FROM Table1 WHERE Time >= '2006-03-10';

-- 2. 截斷原表(DDL 操作,不產生 Rollback,不寫記錄檔,極快)
TRUNCATE TABLE Table1;

-- 3. 重新命名新表為原表名
EXEC sp_rename 'Table2', 'Table1';

關鍵點

  • TRUNCATE 是 DDL,不觸發 Trigger、不記錄逐列刪除、立即釋放頁面。
  • 若資料庫為完整復原模式,SELECT INTO 仍會產生一些記錄,但遠小於 DELETE。
  • 自動遞增欄位會重置為種子值(通常為 1)。
  • 若有外鍵參考,需先移除條件約束再 TRUNCATE,完成後重建。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved