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