Rumah >pangkalan data >SQL >Apakah perbezaan antara baris padam SQL dan Truncate
satu demi satu DELETE
, berdasarkan klausa TRUNCATE
yang ditentukan (atau semua baris jika tidak DELETE
klausa disediakan). Ini bermakna ia memproses setiap baris secara individu, melayari setiap penghapusan. Sebaliknya, adalah pernyataan bahasa definisi data (DDL) yang menghilangkan semua baris dari jadual WHERE
sekaligus WHERE
. Ia lebih cepat, operasi pukal yang tidak log penghapusan baris individu. Fikirkan TRUNCATE
sebagai pembedahan membuang baris tertentu, manakala adalah seperti mengelap meja bersih dengan sapu tunggal. Secara kritikal, membolehkan penyingkiran bersyarat, sedangkan selalu menghilangkan semua baris. Ini kerana tidak perlu log masuk secara individu setiap penghapusan. Keuntungan prestasi amat ketara dalam senario di mana anda perlu mengeluarkan sejumlah besar baris atau semua baris dari meja. Pemprosesan baris demi baris, ditambah pula dengan overhead pembalakannya, boleh membawa kepada kemunculan prestasi yang cukup besar. Tambahan pula, log transaksi untuk operasi DELETE
akan jauh lebih besar daripada itu untuk TRUNCATE
, memberi kesan kepada masa komitmen transaksi dan penggunaan ruang cakera yang berpotensi. Pertimbangkan satu senario di mana anda memadam berjuta -juta baris; DELETE
akan selesai dalam pecahan masa TRUNCATE
akan mengambil.
), baris yang dipadam akan dipulihkan ke keadaan asalnya. Log transaksi menjejaki penghapusan individu, yang membolehkan pembalikan mereka. Sebaliknya, TRUNCATE
pernyataan biasanya DELETE
tidak TRUNCATE
sebahagian daripada urus niaga (walaupun sistem pangkalan data mungkin menawarkan sambungan yang membolehkannya). Operasi DELETE
biasanya dilakukan dengan serta -merta, dan A DELETE
selepas TRUNCATE
tidak akan memulihkan data yang dipadam. Data dianggap tidak dapat ditarik balik apabila operasi TRUNCATE
selesai. Ini kerana DELETE
adalah operasi DDL yang tidak mengekalkan log terperinci penyingkiran baris individu pada tahap granulariti yang sama seperti operasi DML.
adalah pernyataan DDL, ia biasanya tidak menjana entri log transaksi terperinci untuk baris individu. Oleh itu, DELETE
tidak akan memulihkan data. Pertaruhan terbaik anda untuk pemulihan selepas ROLLBACK
adalah bergantung pada backup pangkalan data. Jika anda mempunyai sandaran baru -baru ini, anda boleh memulihkan jadual dari sandaran itu. Memulihkan dari log transaksi sahaja biasanya tidak boleh dilaksanakan selepas
Atas ialah kandungan terperinci Apakah perbezaan antara baris padam SQL dan Truncate. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!