Heim  >  Artikel  >  Datenbank  >  Kann ein eindeutiger Index Duplikate in einer Tabelle mit vorhandenen Duplikaten entfernen und wie?

Kann ein eindeutiger Index Duplikate in einer Tabelle mit vorhandenen Duplikaten entfernen und wie?

Susan Sarandon
Susan SarandonOriginal
2024-10-25 08:10:17249Durchsuche

Can a Unique Index Remove Duplicates in a Table with Existing Duplicates, and How?

Entfernen von Duplikaten mit eindeutigem Index

Um das Einfügen doppelter Daten zu verhindern, wurde fälschlicherweise ein normaler Index für die Felder A, B, C und D, was dazu führt, dass in einer Tabelle mit 20 Millionen Datensätzen doppelte Datensätze vorhanden sind. Es stellt sich die Frage: Werden durch das Hinzufügen eines eindeutigen Indexes für diese Felder die Duplikate entfernt, ohne die vorhandenen zu gefährden?

Korrigieren des Indexes und Umgang mit Duplikaten

Hinzufügen eines eindeutigen Indexes mit Die ALTER TABLE-Anweisung ohne den IGNORE-Modifizierer schlägt fehl, da bereits eindeutige Datensätze vorhanden sind. Durch die Verwendung des IGNORE-Modifikators werden jedoch die Duplikate entfernt.

Alternativer Ansatz für MySQL-Versionen 5.7.4 und höher

Für MySQL-Versionen 5.7.4 und höher, wobei die Der Modifikator IGNORE wird nicht unterstützt, ein anderer Ansatz wird empfohlen:

  1. Kopieren Sie die Daten in eine temporäre Tabelle.
  2. Schneiden Sie die Originaltabelle ab.
  3. Erstellen Sie den eindeutigen Index .
  4. Kopieren Sie die Daten mit INSERT IGNORE zurück in die Originaltabelle und verwerfen Sie alle doppelten Zeilen.

Syntax zum Entfernen von Duplikaten mit INSERT IGNORE

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

Zusätzliche Überlegungen

In der Dokumentation wird nicht angegeben, welche doppelte Zeile nach Verwendung des IGNORE-Modifikators beibehalten wird. Es empfiehlt sich, dies an einem kleineren Datensatz zu testen, bevor Sie die Lösung auf eine große Tabelle anwenden.

Das obige ist der detaillierte Inhalt vonKann ein eindeutiger Index Duplikate in einer Tabelle mit vorhandenen Duplikaten entfernen und wie?. 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