Mengalih Keluar Pendua dengan Indeks Unik
Jika anda mempunyai jadual besar dengan rekod pendua dan anda mahu mengalih keluarnya dengan mencipta indeks yang unik, anda perlu sedar tentang kemungkinan akibat.
Jika anda cuba menambah indeks unik pada jadual yang sudah mengandungi pendua, operasi akan gagal disebabkan oleh ralat kunci pendua. Ini kerana indeks unik menguatkuasakan keunikan data yang terkandung di dalamnya.
Walau bagaimanapun, terdapat penyelesaian untuk masalah ini. Anda boleh menggunakan pengubah suai IGNORE apabila mencipta indeks unik. Ini akan mengarahkan MySQL untuk mengabaikan sebarang nilai pendua dan hanya memasukkan yang unik.
<code class="sql">ALTER TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D) IGNORE;</code>
Menggunakan pengubah suai IGNORE akan mengalih keluar pendua, tetapi adalah penting untuk ambil perhatian bahawa ia tidak menyatakan baris mana yang akan disimpan . MySQL akan sewenang-wenangnya memilih satu baris untuk setiap pendua dan membuang yang lain.
Jika anda menggunakan MySQL versi 5.7.4 atau lebih tinggi, pengubahsuai IGNORE untuk ALTER TABLE telah dialih keluar dan akan menyebabkan ralat. Dalam kes ini, anda boleh menggunakan penyelesaian berikut:
<code class="sql">CREATE TABLE tmp_data SELECT * FROM mytable; TRUNCATE TABLE mytable; ALTER TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D); INSERT IGNORE INTO mytable SELECT * from tmp_data; DROP TABLE tmp_data;</code>
Menggunakan INSERT IGNORE akan mengabaikan sebarang nilai pendua dan hanya memasukkan yang unik. Apabila data telah dimasukkan, jadual sementara boleh digugurkan.
Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Pendua dari Jadual Menggunakan Indeks Unik dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!