MySQL: Duplikate schnell aus riesigen Datenbanken entfernen
Begegnungen mit riesigen MySQL-Datenbanken, die durch doppelte Einträge beeinträchtigt sind, erfordern eine schnelle Lösung, insbesondere in Szenarien, in denen Zeit benötigt wird ist von wesentlicher Bedeutung. Aufgrund von Bedenken hinsichtlich der Ausführungszeit von Abfragen war eine dieser Datenbanken, die über eine Million Zeilen umfasst, mit Duplikaten übersät, die möglicherweise bis zur Hälfte ihrer Speicherkapazität beanspruchen.
Ziel ist es, die Datenbank schnell zu bereinigen und Eindeutige zu identifizieren Kombinationen von „text1“ und „text2“, wobei für jede eindeutige Kombination ein einzelner Datensatz mit einem „text3“-Wert ungleich Null erhalten bleibt. Dieser Prozess verhindert Datenverlust und stellt die Datenintegrität sicher.
Herkömmliche Ansätze wie DISTINCT und GROUP BY sind zwar bei kleineren Datenbanken effektiv, haben sich jedoch als unzureichend erwiesen, da die Ausführungszeiten der Abfragen den Schwellenwert von 20 Minuten überschreiten. Daher wird nach einer effizienteren Lösung gesucht.
Eine solche Lösung, die die kombinierte Leistung von „ON DUPLICATE KEY“ und „IFNULL()“ nutzt, bietet außergewöhnliche Leistung:
CREATE TABLE tmp LIKE yourtable; ALTER TABLE tmp ADD UNIQUE (text1, text2); INSERT INTO tmp SELECT * FROM yourtable ON DUPLICATE KEY UPDATE text3=IFNULL(text3, VALUES(text3)); RENAME TABLE yourtable TO deleteme, tmp TO yourtable; DROP TABLE deleteme;
Dieser Ansatz zeichnet sich dadurch aus, dass ressourcenintensive Vorgänge wie GROUP BY und DISTINCT vermieden werden. Außerdem werden die mit der Dateisortierung verbundenen Leistungsprobleme umgangen, die bei großen temporären Tabellen ein großes Hindernis darstellen. Während ein vollständiger Scan der Originaltabelle unvermeidbar bleibt, bietet diese optimierte Lösung den effizientesten Ansatz zur Duplikatentfernung bei umfangreichen Datenbanken.
Das obige ist der detaillierte Inhalt vonWie entferne ich schnell Duplikate aus einer riesigen MySQL-Datenbank?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!