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

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

Linda Hamilton
Linda HamiltonOriginal
2024-10-28 09:43:29378Durchsuche

**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>

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>
  2. Originaltabelle abschneiden:

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

    <code class="sql">ALTER TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D);</code>
  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>
  5. Löschen Sie die temporäre Tabelle:

    <code class="sql">DROP TABLE tmp_data;</code>

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!

Stellungnahme:
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