„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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?

Veröffentlicht am 08.11.2024
Durchsuche:759

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-Modifizierers 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 IGNORE-Modifizierer 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

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;

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.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3