博主作過比較多項目的archive腳本編寫,對於這種刪除數據的腳本開發,確定是一開始的話用最簡單的一個delete語句,而後因爲部分表數據量比較大啊,索引比較多啊,會發現刪除數據很慢並且影響系統的正常使用。而後就對delete語句進行按均勻數據量分批delete的改寫,這樣的話,原來的刪除一個表用一個語句,就可能變成幾十行,若是archive的表有十幾個甚至幾十個,那咱們的腳本篇幅就很是大了,增長了開發和維護的成本,不利於經驗比較少的新入職同事去開發archive腳本,也容易把注意力分散到所謂分批邏輯中。sql
根據這種狀況,本週博主(zhang502219048)恰好在工做過程當中,總結並編寫了一個自動分批刪除數據的模板,模板固定不變,只須要把注意力集中放在delete語句中,而且能夠在delete語句中控制每批刪除的數據量,比較方便,經過變量組裝模板sql,避免每一個表就單獨寫一個分批邏輯的重複代碼,化簡爲繁,增長分批刪除一個表指定數據的話只須要增長几行代碼就能夠(以下所示中的demo1和demo2)。ide
demo1:帶參數,根據Date字段是否過時刪除表B對應數據。spa
demo2:不帶參數,根據表tmp_Del刪除表A對應ID的數據。索引
具體請參考下面的腳本和相關說明,若有不懂的地方歡迎評論或私信諮詢博主。 圖片
( ( ( ( ( () N N , N , sp_executesql , , N, , out , sp_executesql , , N, , out