SQL Delete & Update Best Practice

Management Studio Oct 29, 2018

Dear Pembaca setia,

Kali ini penulis hendak membagikan pendekatan penggunaan di SQL Query untuk Update dan Delete data dalam jumlah yang sangat banyak (jutaan row per tabel). kita hendak melakukan Delete atau Update tabel dalam jumlah yang sangat banyak, maka tabel tersebut akan di-reserved oleh sistem, dan tidak dapat dilakukan beberapa aktifitas (read, update, bahkan delete).

Reservasi tabel ini terjadi dalam waktu yang sangat lama, selama waktu untuk men-Delete ataupun meng-Update tabel, bisa bermenit-menit, berjam-jam. Untuk itu, pendekatan kali ini adalah melakukan Update ataupun Delete dengan membagi waktu eksekusi menjadi bagian yang kecil-kecil, sekitar 1000-10000 row per eksekusi.

Langsung saja kita perhatikan contohnya:

UPDATE

Declare @Rowcount INT = 1;

WHILE (@Rowcount > 0) 
BEGIN
 UPDATE TOP (10000) --<-- define Batch Size in TOP Clause
  a
 SET
  a.[New_Value] = a.[Old_Value]
 FROM
  [table] a
 WHERE
  a.[New_Value] <> a.[Old_Value]
 
 SET @Rowcount = @@ROWCOUNT
 
 CHECKPOINT;   --<-- to commit the changes with each batch

END

DELETE

Declare @Rowcount INT = 1;

WHILE (@Rowcount > 0)
BEGIN
   DELETE TOP(2000)
   FROM Foo
   WHERE <predicate>

   SET @Rowcount = @@ROWCOUNT
END

Demikian sesi tips SQL server kali ini. Bila ada kesempatan lagi akan terus kami sampaikan lewat blog ini.

Terima kasih sudah mampir di blog kami.

Salam,

Sumber

Tags