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