MySQL

Perbedaan DELETE dan TRUNCATE di MySQL, Lengkap dengan Contoh

MySQL adalah sistem manajemen basis data relasional yang banyak digunakan untuk menyimpan dan mengelola data. Dalam konteks pengelolaan data, terdapat perbedaan penting antara operasi DELETE dan TRUNCATE. DELETE adalah perintah yang digunakan untuk menghapus baris tertentu dari tabel berdasarkan kondisi yang ditentukan.

Operasi DELETE bersifat transaksional dan memungkinkan pengguna untuk menghapus baris-baris yang memenuhi syarat tertentu, sambil mempertahankan integritas referensial dengan tabel lainnya. Namun, DELETE dapat menjadi lebih lambat jika digunakan untuk menghapus banyak baris, terutama karena melibatkan logging dan indexing.

Di sisi lain, TRUNCATE adalah perintah yang digunakan untuk menghapus semua baris dari sebuah tabel secara cepat dan efisien. Perbedaan utama antara DELETE dan TRUNCATE terletak pada cara operasi ini dilakukan dan dampaknya terhadap tabel.

TRUNCATE tidak menghasilkan log per baris seperti DELETE, sehingga lebih cepat dalam mengosongkan tabel besar. Namun, penting untuk diingat bahwa TRUNCATE bersifat non-transaksional dan tidak akan mengaktifkan pemicu (triggers) yang mungkin telah ditentukan pada tabel.

Selain itu, TRUNCATE juga mengatur kembali counter otomatis pada kolom-kolom yang memiliki tipe data auto-increment, sedangkan DELETE tidak memiliki efek semacam itu.

Perintah delete dan truncate sebenarnya sama-sama digunakan untuk melakukan penghapusan data yang ada dalam tabel, tetapi delete dan truncate memiliki perbedaan, antara lain sebagai berikut.

1. TRUNCATE

Truncate sepenuhnya menghapus semua catatan dari tabel tanpa menggunakan kondisi, jadi saat menggunakan perintah truncate, tidak ada batasan untuk menghapus beberapa data yang ada.

Truncate melakukan reset identitas pada tabel, saat memasukkan data baru, jika ada kolom auto_increment, maka penomoran data akan berulang dari awal atau dari angka 1.

Truncate termasuk dalam sintaks DDL, tetapi truncate tidak dapat mengubah struktur data pada tabel, truncate hanya menghilangkan nilai yang ada pada tabel.

Perintah truncate dapat dijalankan menggunakan sintaks TRUNCATE TABLE [nama_tabel];.

TRUNCATE
Truncate

Gambar Truncate adalah bukti bahwa sintaks Truncate tidak melanjutkan penomoran data, jadi Truncate menghapus tabel dan tidak menyimpan data log atau histori apa pun dari tabel.

Pemotongan digunakan saat membuat database yang tidak menyimpan data sebelumnya, atau saat mereset angka di database hingga menemukan data penomoran baru mulai dari nol.

2. DELETE

Hapus akan menghapus catatan menggunakan kondisi. Hapus juga dapat digunakan tanpa memanfaatkan suatu kondisi, dalam hal ini akan menghapus semua data dalam tabel.

Tidak seperti Truncate, Hapus tidak mereset identitas tabel. Saat memasukkan data baru menggunakan perintah Hapus, jika ada data pada posisi auto_increment maka penomoran akan dilanjutkan dan tidak akan diulang dari awal.

Perintah hapus dikelompokkan dalam bahasa manipulasi data. Perintah Hapus dapat dilakukan dengan sintaks DELETE FROM [nama_tabel] WHERE [kondisi];

Delete
Delete

Gambar Delete adalah bukti kalau sintak Delete tersebut yang mengosongkan isi tabel dan melanjutkan penomoran.

Delete dapat digunakan ketika membikin sebuah database yang menyimpan data history dari penomoran  data tersebut.

Misalnya, di sebuah toko, database yang mereka miliki meluap dalam sehari, sehingga mereka membackup data dan menghapus data di database tersebut, hingga hari itu mereka bisa terus menomori pembeli.

Kesimpulan:

Secara singkat, perbedaan antara operasi DELETE dan TRUNCATE dalam MySQL mencakup beberapa aspek penting. DELETE digunakan untuk menghapus baris-baris tertentu dari tabel berdasarkan kondisi yang ditentukan, bersifat transaksional, mempertahankan integritas referensial, dan dapat memicu pemicu yang ada.

Namun, ini bisa lebih lambat ketika menghapus banyak data karena melibatkan logging dan indexing. Di sisi lain, TRUNCATE digunakan untuk mengosongkan seluruh tabel dengan cepat dan efisien, tidak mempertahankan integritas referensial atau memicu pemicu, dan bekerja lebih cepat untuk tabel besar karena tidak melibatkan log per baris.

Oleh karena itu, pemilihan antara DELETE dan TRUNCATE sebaiknya didasarkan pada tujuan penghapusan data, pengaruh terhadap struktur tabel, serta performa yang diinginkan dalam konteks proyek tertentu.

Tinggalkan Komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *