Heim > Datenbank > MySQL-Tutorial > Hauptteil

**Können Sie doppelte Datensätze entfernen, indem Sie einen vorhandenen Index in „Eindeutig' ändern oder einen neuen hinzufügen?**

Linda Hamilton
Freigeben: 2024-10-28 09:43:29
Original
377 Leute haben es durchsucht

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

Duplikate mit eindeutigem Index entfernen

Um doppelte Datensätze zu verhindern, besteht ein gängiger Ansatz darin, einen eindeutigen Index für die relevanten Tabellenspalten zu erstellen. Ein kürzlich aufgetretener Fehler führte jedoch dazu, dass stattdessen ein normaler Index erstellt wurde, der es ermöglichte, dass Duplikate in einer riesigen Tabelle mit 20 Millionen Datensätzen bestehen bleiben.

Frage: Wird den vorhandenen Index in „eindeutig“ ändern oder hinzufügen Ein neuer eindeutiger Index für diese Spalten entfernt die doppelten Datensätze, oder schlägt der Vorgang aufgrund vorhandener eindeutiger Einträge fehl?

Antwort:

Hinzufügen eines eindeutigen Index mit IGNORE Der Modifikator entfernt doppelte Datensätze:

<code class="sql">ALTER IGNORE TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D);</code>
Nach dem Login kopieren

Dieser Modifikator ist jedoch in MySQL 5.7.4 und höher veraltet, was zu einem Fehler führt. Um dieses Problem zu umgehen, können die folgenden Schritte unternommen werden:

  1. Erstellen Sie eine temporäre Tabelle, um die Daten aus der Originaltabelle zu speichern:

    <code class="sql">CREATE TABLE tmp_data SELECT * FROM mytable;</code>
    Nach dem Login kopieren
  2. Originaltabelle abschneiden:

    <code class="sql">TRUNCATE TABLE mytable;</code>
    Nach dem Login kopieren
  3. Eindeutigen Index für die Originaltabelle erstellen:

    <code class="sql">ALTER TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D);</code>
    Nach dem Login kopieren
  4. Daten zurückkopieren in die Originaltabelle einfügen und dabei doppelte Zeilen ignorieren:

    <code class="sql">INSERT IGNORE INTO mytable SELECT * from tmp_data;</code>
    Nach dem Login kopieren
  5. Löschen Sie die temporäre Tabelle:

    <code class="sql">DROP TABLE tmp_data;</code>
    Nach dem Login kopieren

Alternativ können Sie einen eindeutigen Index hinzufügen Ohne den IGNORE-Modifizierer würde die Abfrage mit Fehler 1062 (doppelter Schlüssel) fehlschlagen.

Das obige ist der detaillierte Inhalt von**Können Sie doppelte Datensätze entfernen, indem Sie einen vorhandenen Index in „Eindeutig' ändern oder einen neuen hinzufügen?**. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!