Senario: Baris pendua dalam jadual MySQL boleh timbul daripada pelbagai sumber, termasuk ralat kemasukan data. Mengalih keluar pendua ini adalah penting untuk mengekalkan integriti data dan prestasi pangkalan data yang optimum.
Masalah: Cabarannya terletak pada memadamkan semua kecuali satu tika bagi setiap baris pendua.
Penyelesaian & Langkah Berjaga-jaga:
Nota Kritikal: Sentiasa sandarkan jadual anda sebelum melaksanakan sebarang pertanyaan PADAM. Pernyataan DELETE yang dilaksanakan secara tidak betul boleh menyebabkan kehilangan data yang tidak dapat dipulihkan.
Kaedah 1: Mengekalkan Baris dengan ID Terendah
Pendekatan ini mengekalkan baris dengan nilai ID terkecil:
<code class="language-sql">DELETE n1 FROM names n1, names n2 WHERE n1.id > n2.id AND n1.name = n2.name;</code>
Kaedah 2: Mengekalkan Baris dengan ID Tertinggi
Alternatif ini mengekalkan baris yang mempunyai nilai ID terbesar:
<code class="language-sql">DELETE n1 FROM names n1, names n2 WHERE n1.id < n2.id AND n1.name = n2.name;</code>
Kecekapan Dipertingkatkan untuk Meja Besar:
Untuk jadual yang sangat besar, kaedah INSERT ... SELECT DISTINCT
berikut menyediakan penyelesaian yang lebih cekap:
<code class="language-sql">CREATE TEMPORARY TABLE tempTableName AS SELECT DISTINCT cellId, attributeId, entityRowId, value FROM tableName; TRUNCATE TABLE tableName; INSERT INTO tableName SELECT * FROM tempTableName; DROP TEMPORARY TABLE tempTableName;</code>
Ini mencipta jadual sementara yang mengandungi hanya baris unik, memotong jadual asal dan kemudian mengisinya dengan data unik daripada jadual sementara. Ini biasanya lebih pantas daripada menggunakan DELETE
untuk set data yang besar. Ingat untuk menggantikan tableName
, cellId
, attributeId
, entityRowId
dan value
dengan nama lajur sebenar anda.
Atas ialah kandungan terperinci Bagaimana Mengeluarkan Baris Pendua dengan Cekap dari Jadual MySQL Semasa Memelihara Satu Contoh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!