Dari Aknutman

Selamat Datang semoga layanan kami memberikan informasi yang anda cari. (Dan mohon comment-nya :-D)

Monday, October 29, 2018

SQL Delete & Update Best Practice

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 Best Practice

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
sumber di sini

Delete Best Practice

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,