Apa beda truncate & delete.
Contoh perintah truncate :
Code:
TRUNCATE TABLE tbl_member
TRUNCATE TABLE tbl_member, tbl_posts
Contoh perintah delete :
Code:
DELETE FROM tbl_member
DELETE FROM tbl_member WHERE id_member = 1
DELETE FROM tbl_member WHERE id_member = 1 OR id_member = 2
Dari contoh di atas terlihat bahwa pada TRUNCATE, semua data di tabel dikosongkan tanpa kecuali.
Sedangkan pada DELETE, kita bisa menghapus hanya data tertentu saja (dengan menambahkan WHERE), atau seluruh data (tanpa WHERE).
Sekarang jika kita ingin menghapus seluruh data, dua-duanya mampu, lalu mana yang kita pilih?
TRUNCATE atau DELETE?.
Pada perintah TRUNCATE, penghapusan terjadi lebih cepat, yaitu bisa diibaratkan bahwa tabel di-DROP dan di-CREATE ulang.
Akibatnya selain data kosong, dengan TRUNCATE auto_increment juga ter-reset jadi awal (1).
Sedangkan pada DELETE, jika kita menghapus semua data, auto_increment masih melanjutkan auto_increment yang lalu.
Misal ada tabel berikut
Code:
==========
id - nama
==========
1 - joko
2 - budi
3 - bayu
Setelah kita meng-TRUNCATE tabel tersebut, jika kita memasukkan data baru lagi, maka id akan bernilai 1
Code:
==========
id - nama
==========
1 - data baru
Sedangkan bila kita men-DELETE data tabel tersebut, jika kita memasukkan data baru lagi, maka id akan bernilai 4
Code:
==========
id - nama
==========
4 - data baru
Selain itu pada perintah DELETE tanpa WHERE (penghapusan semua row), proses DELETE akan berjalan lambat karena setiap row di tabel di-DELETE satu per satu.
Bayangkan bila ada 2 ribu row, semua didelete satu per satu secara background.
Maka gunakan TRUNCATE & DELETE tergantung situasi, kondisi, & kebutuhan
Kesimpulan :
- Untuk menghapus seluruh data, gunakan TRUNCATE.
- Untuk menghapus data tertentu, gunakan DELETE.