Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengelakkan Pendua dengan Cekap Apabila Menggunakan INSERT INTO SELECT dalam SQL Server?
Pernyataan INSERT INTO SELECT dalam SQL Server dengan cekap mengelakkan data pendua
Dalam operasi pangkalan data, memasukkan data dari satu jadual ke jadual lain sambil mengelakkan pertindihan adalah tugas biasa. Artikel ini membincangkan cara menambahkan rekod dalam Jadual1 ke Jadual2 dengan cekap untuk mengelakkan pertindihan ID.
Salah satu cara ialah menggunakan pernyataan IF-ELSE untuk menyemak sama ada ID wujud dalam Jadual2 sebelum memasukkan:
<code class="language-sql">IF NOT EXISTS(SELECT 1 FROM Table2 WHERE Id=1) INSERT INTO Table2 (Id, name) SELECT Id, name FROM Table1 ELSE INSERT INTO Table2 (Id, name) SELECT Id, name FROM Table1 WHERE Table1.Id1</code>
Walau bagaimanapun, kaedah ini memerlukan menulis beberapa pernyataan INSERT INTO-SELECT berdasarkan syarat. Untuk mencari penyelesaian yang lebih cekap, kami meneroka tiga alternatif:
1. Guna NOT EXISTS
<code class="language-sql">INSERT INTO TABLE_2 (id, name) SELECT t1.id, t1.name FROM TABLE_1 t1 WHERE NOT EXISTS(SELECT id FROM TABLE_2 t2 WHERE t2.id = t1.id)</code>
2. Gunakan NOT IN
<code class="language-sql">INSERT INTO TABLE_2 (id, name) SELECT t1.id, t1.name FROM TABLE_1 t1 WHERE t1.id NOT IN (SELECT id FROM TABLE_2)</code>
3. Gunakan LEFT JOIN/IS NULL
<code class="language-sql">INSERT INTO TABLE_2 (id, name) SELECT t1.id, t1.name FROM TABLE_1 t1 LEFT JOIN TABLE_2 t2 ON t2.id = t1.id WHERE t2.id IS NULL</code>
Antara ketiga-tiga kaedah ini, kaedah LEFT JOIN/IS NULL adalah kurang cekap berbanding kaedah lain. Untuk memasukkan data dalam pertanyaan INSERT INTO SELECT SQL Server sambil mengelakkan pertindihan, teknik NOT EXISTS dan NOT IN memberikan prestasi terbaik.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Pendua dengan Cekap Apabila Menggunakan INSERT INTO SELECT dalam SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!