Rumah >pangkalan data >tutorial mysql >Apakah Perbezaan Antara TRUNCATE dan DELETE dalam SQL?
Apabila memadamkan data dalam jadual pangkalan data, terdapat dua pilihan utama: TRUNCATE dan DELETE. Walaupun kedua-dua arahan boleh memadamkan baris, ia mempunyai ciri berbeza yang memerlukan pertimbangan yang teliti.
Jika matlamatnya adalah untuk memadam semua baris dengan cepat daripada jadual dan tiada kekangan kunci asing yang menyekat operasi, TRUNCATE lebih pantas daripada DELETE. Walau bagaimanapun, faktor khusus sistem boleh mengubah dinamik ini.
Bertentangan dengan sifat DML (Bahasa Manipulasi Data) DELETE, TRUNCATE tergolong dalam DDL (Bahasa Definisi Data). Perbezaan asas ini mempengaruhi tingkah laku dan makna mereka.
Keupayaan untuk mengembalikan kenyataan bergantung pada platform. Walaupun sesetengah pelaksanaan membenarkan pemulangan semula operasi pemangkasan, pelaksanaan lain, terutamanya yang menggunakan pendekatan DDL, tidak membenarkan pemulangan semula.
Perbezaan utama ialah kesannya terhadap ruang storan. DELETE hanya memadamkan baris, manakala TRUNCATE melakukan proses penambakan ruang yang komprehensif yang mungkin mengosongkan sejumlah besar ruang cakera.
TRUNCATE memadamkan semua baris dalam jadual sekaligus, manakala DELETE menyediakan fleksibiliti untuk memilih baris tertentu untuk dipadamkan.
TRUNCATE biasanya digunakan pada jadual, manakala DELETE boleh beroperasi pada kedua-dua jadual dan gugusan jadual (jika ada).
Dalam sesetengah pelaksanaan, TRUNCATE memberikan pengecam objek data baharu kepada jadual, manakala DELETE tidak menjejaskannya.
Teknologi imbas kembali (direka bentuk untuk memulihkan data yang hilang) boleh digunakan dengan pemadaman, tetapi bukan dengan pemotongan.
Mekanisme kebenaran mungkin berbeza antara pelaksanaan. Sebagai contoh, pemberian kebenaran DELETE pada jadual dibenarkan, tetapi pemotongan jadual mungkin memerlukan kebenaran yang lebih tinggi.
TRUNCATE menjana sangat sedikit entri log buat semula dan buat asal berbanding dengan log besar yang dijana oleh DELETE.
Dalam sesetengah kes, TRUNCATE boleh menjadikan indeks yang tidak tersedia tersedia semula, manakala DELETE tidak mempunyai fungsi ini.
Pemotongan mungkin tidak dibenarkan untuk jadual dengan rujukan kunci asing didayakan. Dinamik penguncian meja juga berbeza-beza, dengan TRUNCATE biasanya memerlukan kunci eksklusif, manakala DELETE boleh menggunakan kunci kongsi.
Pencetus DML (dilaksanakan sebagai tindak balas kepada pernyataan manipulasi data) tidak akan menyala semasa pemangkasan.
Sesetengah pelaksanaan (seperti Oracle) mengehadkan keupayaan untuk melaksanakan kenyataan TRUNCATE melalui pautan pangkalan data.
Dalam sesetengah pelaksanaan, memotong jadual dengan lajur kenaikan automatik menetapkan semula jujukan lajur tersebut, manakala DELETE tidak.
DELETE boleh mengembalikan baris yang dipadamkan kepada klien, manakala TRUNCATE tidak mempunyai fungsi ini.
Atas ialah kandungan terperinci Apakah Perbezaan Antara TRUNCATE dan DELETE dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!