Vorwort: Der Grund für die Überstunden besteht darin, online zu gehen und das Problem doppelter Daten in der Online-Datenbank zu lösen. Es wurde In der Online-Bibliothek gibt es in 6 Tabellen doppelte Daten, von denen 2 relativ groß sind, eine mit mehr als 960.000 und die andere mit mehr als 300.000. Da ich mich bereits zuvor mit demselben Problem befasst habe, habe ich direkt das Emmmm, aber die Effizienz ist zu niedrig, ein Stück pro Sekunde, über 20.000 doppelte Daten und die geschätzte Zeit beträgt etwa 8 Stunden. . . Es ist problematisch, sich blind auf die Dinge der Vorgänger zu verlassen, ohne selbst nachzudenken! Sich ständig zu fragen, warum es vorher funktioniert hat und warum es jetzt nicht funktioniert, ist auch ein Problem! Ich habe festgestellt, dass es mir in letzter Zeit schlecht ging und ich die Lust am Entdecken und Wissen verloren habe. Der heutige Tag ist für mich ein Weckruf und ich habe das Gefühl, endlich wieder auf den richtigen Weg gefunden zu haben. Kommen wir nun zum Thema zurück. Die Deduplizierungsschritte werden im Folgenden ausführlich vorgestellt. 1. Entdecken Sie das ProblemCREATE TABLE `Tier` ( `id` int(11) NICHT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `Alter` int(11) DEFAULT NULL, PRIMÄRSCHLÜSSEL (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; INSERT INTO `pilipa_dds`.`student` (`id`, `name`, `alter`) VALUES ('1', 'Katze', '12'); INSERT INTO `pilipa_dds`.`student` (`id`, `name`, `alter`) VALUES ('2', 'Hund', '13'); INSERT INTO `pilipa_dds`.`student` (`id`, `name`, `alter`) VALUES ('3', 'camel', '25'); INSERT INTO `pilipa_dds`.`student` (`id`, `name`, `alter`) VALUES ('4', 'Katze', '32'); INSERT INTO `pilipa_dds`.`student` (`id`, `name`, `alter`) VALUES ('5', 'Hund', '42'); Ziel: Wir möchten Daten mit gleichem Prüfen Sie zunächst, welche Daten wiederholt werden. SELECT Name,Anzahl( 1 ) AUS Student GRUPPELN NACH NAME HABEN Anzahl(1) > 1; Ausgabe:
Die Daten Wählen Sie * aus der Tabelle mit dem sich wiederholenden Feld aus (Wählen Sie ein sich wiederholendes Feld aus der Tabellengruppe nach sich wiederholenden Feldern mit der Anzahl (1)>1) 2. Löschen Sie alle doppelten Daten, ohneDas direkte Löschen führt zu einem Fehler. LÖSCHEN AUS Student WO NAME IN ( NAME AUSWÄHLEN AUS Student GRUPPELN NACH NAME HABEN Anzahl( 1 ) > 1) Fehler: 1093 - Sie können die Zieltabelle „Student“ für die Aktualisierung in der FROM-Klausel nicht angeben, Zeit: 0,016000 s Der Grund ist: Während der Aktualisierung dieser Tabelle wird diese Tabelle abgefragt, während der Abfrage dieser Tabelle wird diese Tabelle erneut aktualisiert, was als Deadlock verstanden werden kann. MySQL unterstützt diesen Vorgang des Aktualisierens und Abfragens derselben Tabelle nicht. Lösung: Fragen Sie die zu aktualisierenden Datenspalten als Drittanbietertabelle ab und filtern und aktualisieren Sie sie anschließend. LÖSCHEN AUS Student WO NAME IN ( WÄHLEN t.NAME AUS (SELECT NAME FROM student GROUP BY NAME HAVING count( 1 ) > 1 ) t) 3. Löschen Sie doppelte Daten aus der Löschtabelle und behalten Sie nur eineVor dem Löschen können wir prüfen, welche Art von doppelten Daten wir löschen möchten. WÄHLEN * AUS Student WO id NICHT IN ( WÄHLEN t.id AUS (SELECT MIN(id) AS id FROM student GROUP BY `name`) t ) Was bedeutet das? Zuerst gruppieren wir nach 4. Beginnen Sie mit dem Löschen doppelter Daten und behalten Sie nur eine Es ist ganz einfach. Ersetzen Sie einfach LÖSCHEN AUS Student WO id NICHT IN ( WÄHLEN t.id AUS (SELECT MIN(id) AS id FROM student GROUP BY `name`) t ) Die Ausführung einer Tabelle mit über 900.000 Datensätzen ist superschnell. Dies ist das Ende dieses Artikels zum Herausfiltern doppelter Daten während Das könnte Sie auch interessieren:
|
<<: Schritte zur VMware-Konfiguration des VMnet8-Netzwerks
>>: Responsive Webdesign lernen (3) - So verbessern Sie die Leistung von Webseiten auf Mobilgeräten
Inhaltsverzeichnis Vorwort Was ist Deno? Vergleic...
Der Parameter innodb_autoinc_lock_mode steuert da...
Hallo zusammen, ich frage mich, ob ihr die gleich...
Inhaltsverzeichnis Einführung Nachfolgend sehen S...
Standort / { Index Index.jsp; Proxy_next_upstream...
Inhaltsverzeichnis 01 CMD 02 EINSTIEGSPUNKT 03 AR...
MySQL selbst wurde auf Basis des Dateisystems ent...
Ergebnisse erzielen Implementierungscode html <...
Um eine Zeichenfolge zu ersetzen, müssen wir das ...
Inhaltsverzeichnis Installieren Sie zuerst wget H...
So führen Sie eine paginierte Abfrage durch: 1. F...
einführen In einem verteilten System ist die vert...
Navigationsleiste erstellen: Technische Vorausset...
Problembeschreibung Vor kurzem gab es einen MySQL...
Das Layout des Textes unterliegt je nach Sprache ...