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
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,