如何提升SQLServer Delete資料的效率

ywxj_001發表於2020-01-06

場景:

對一張3億的大表進行Delete。

透過中間表實現。

先把需要歸檔的資料寫入歷史表Cou_History..Cou_History。

把需要刪除表的欄位條件寫入中間表。

select SysNo into COU_temp01

FROM    COU

WHERE EXISTS (SELECT 1 FROM Cou_History..Cou_History a WHERE a.SysNo=COU.SysNo)


然後用中間表作為中間條件去刪除主表的相關資料。再刪除已經在主表刪除的中間表欄位資料。

以下SQL迴圈執行,直到全部刪除完畢。

DELETE TOP(1000)

from COU

where SysNo in

(select top 1000 *  from COU_temp01)


delete top(1000) from COU_temp01





來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22996654/viewspace-2672185/,如需轉載,請註明出處,否則將追究法律責任。

相關文章