**Bolehkah Anda Mengalih Keluar Rekod Pendua dengan Mengubah Suai Indeks Sedia Ada kepada Unik atau Menambah Rekod Baharu?**

Linda Hamilton
Lepaskan: 2024-10-28 09:43:29
asal
377 orang telah melayarinya

**Can You Remove Duplicate Records by Modifying an Existing Index to Unique or Adding a New One?**

Mengalih Keluar Pendua dengan Indeks Unik

Dalam usaha untuk menghalang rekod pendua, pendekatan biasa ialah mencipta indeks unik pada lajur jadual yang berkaitan. Walau bagaimanapun, kesilapan baru-baru ini mengakibatkan penciptaan indeks biasa sebaliknya, membenarkan pendua kekal dalam jadual rekod 20 juta besar.

Soalan: Akan mengubah suai indeks sedia ada kepada unik atau menambah indeks unik baharu untuk lajur tersebut mengalih keluar rekod pendua atau adakah operasi akan gagal disebabkan oleh entri unik sedia ada?

Jawapan:

Menambah indeks unik dengan IGNORE pengubah suai akan mengalih keluar rekod pendua:

<code class="sql">ALTER IGNORE TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D);</code>
Salin selepas log masuk

Walau bagaimanapun, pengubah suai ini ditamatkan penggunaannya dalam MySQL 5.7.4 dan kemudian, mengakibatkan ralat. Untuk mengelakkan isu ini, langkah berikut boleh diambil:

  1. Buat jadual sementara untuk menyimpan data daripada jadual asal:

    <code class="sql">CREATE TABLE tmp_data SELECT * FROM mytable;</code>
    Salin selepas log masuk
  2. Potong jadual asal:

    <code class="sql">TRUNCATE TABLE mytable;</code>
    Salin selepas log masuk
  3. Buat indeks unik pada jadual asal:

    <code class="sql">ALTER TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D);</code>
    Salin selepas log masuk
  4. Salin semula data ke dalam jadual asal sambil mengabaikan baris pendua:

    <code class="sql">INSERT IGNORE INTO mytable SELECT * from tmp_data;</code>
    Salin selepas log masuk
  5. Lepaskan jadual sementara:

    <code class="sql">DROP TABLE tmp_data;</code>
    Salin selepas log masuk

Sebagai alternatif, tambahkan indeks unik tanpa pengubah suai IGNORE akan menyebabkan pertanyaan gagal dengan Ralat 1062 (kunci pendua).

Atas ialah kandungan terperinci **Bolehkah Anda Mengalih Keluar Rekod Pendua dengan Mengubah Suai Indeks Sedia Ada kepada Unik atau Menambah Rekod Baharu?**. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!