MySQL-Optimierungstipps: Analyse der Implementierungsmethoden zur Duplikatsentfernung [Millionen von Daten]

MySQL-Optimierungstipps: Analyse der Implementierungsmethoden zur Duplikatsentfernung [Millionen von Daten]

Dieser Artikel veranschaulicht anhand eines Beispiels, wie Sie doppelte Einträge in MySQL-Optimierungstipps entfernen. Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

Wenn es um die Deduplizierung geht, bekomme ich ständig Kopfschmerzen, insbesondere wenn das Ausgabevolumen groß ist. Schließlich bin ich kein professioneller Datenbankadministrator und kann mir daher nur eine Deduplizierungsmethode ausdenken, die zu mir passt.

Befolgen Sie zunächst den normalen ersten Absatz, suchen Sie mithilfe der Having-Funktion nach Duplikaten und löschen Sie diese anschließend einen nach dem anderen. Fragen Sie mich nicht, wie man das SQL zum Erkennen von Duplikaten schreibt, das wissen Sie. . . Dies ist in Ordnung, wenn nur wenige Duplikate vorhanden sind. Was ist, wenn Tausende oder Zehntausende verschiedener Datenduplikate vorhanden sind? . .

Wenn wir fertig sind, betrachten wir, dass das ursprüngliche SQL wie folgt lautet, wenn wir die Having-Funktion zum Abfragen verwenden:

Wählen Sie „Name“, Anzahl(*) als Anzahl aus der Satzgruppe nach „Name“, deren Anzahl > 1 ist.

Sie können es ausführen und spüren, wenn es etwa 5 Millionen Daten gibt, ist die Geschwindigkeit Sesamöl. . .

Ohne jedoch die Optimierung der Ausführungsgeschwindigkeit zu berücksichtigen, möchten wir mit dieser Anweisung doppelte Elemente aus dem Array entfernen. Zunächst müssen wir wissen, welche Daten wir zum Löschen doppelter Daten verwenden müssen. Die ID steht fest, und dann die Filterbedingungen, oder? Was fehlt also in den Daten, die durch das obige SQL abgefragt wurden? . . Dann fügen wir dieses Feld hinzu und probieren es aus:

select id,`name`,count(*) als Anzahl aus der Satzgruppe nach `name` mit Anzahl>1

Als Ergebnis werden die drei Felder ID, Name und Anzahl angezeigt. Sie können es selbst ausführen, um die spezifische Wirkung zu sehen. Anhand dieser Daten können wir Duplikate entfernen.

Das spezifische SQL-Design besteht darin, die ID zu löschen, die nicht die von uns abgefragte ID ist, aber der Namenswert ist der von uns abgefragte Wert. Da unsere Daten nicht eins sind, müssen sie vom Programm verarbeitet werden. Alle IDs werden mit Kommas verkettet und der Namenswert wird mit Anführungszeichen und Kommas verarbeitet. Danach kann er verwendet werden. Das Beispiel ist unten:

aus dem Satz löschen, wo die ID nicht in (1,2,3) und der Name in ('a', 'b', 'c') ist

Wenn zu viele Daten vorhanden sind, können wir sie in ein Skript schreiben und den Vorgang dann stapelweise ausführen, wenn wir fertig sind. Hey, jetzt können wir Duplikate entfernen, aber die Geschwindigkeit ist immer noch ein Problem. Als Nächstes müssen wir überlegen, wie wir dieses SQL optimieren können, um seine Geschwindigkeit zu erhöhen, und dann sind wir fertig.

Da wir die Ausführungsgeschwindigkeit unseres SQL verbessern möchten, sollten wir uns naturgemäß zuerst Gedanken über den Index machen. Okay, ohne weitere Umschweife, erstellen wir zuerst einen Index. Aber wie sieht es mit der Erstellung dieses Feldes aus? ? ? Dies ist ein weiteres Problem.

Dieses Prinzip basiert auf den Feldern, die sich durch Ihr Namensfeld unterscheiden lassen. Beispielsweise sind in meinem Namensfeld Markennamen gespeichert und ich habe ein Branchenfeld, in dem die Branche jeder Marke gespeichert ist. Daher habe ich für mein Branchenfeld einen Index erstellt. Natürlich gibt es passendere, es hängt davon ab, wie Sie darüber denken. Lassen Sie uns ohne weitere Umschweife einen Blick auf unser optimiertes SQL werfen:

Wählen Sie ID, „Name“, Anzahl (*) als Anzahl aus dem Satz, in dem die Branche „Getränke“ lautet. Gruppieren Sie nach „Name“, wenn die Anzahl > 1 ist.

Die Ergebnisse sind wie folgt:

Was zeigt das Ergebnis? Es zeigt, dass unser Index verwendet wird. . . Was die Geschwindigkeit betrifft, sollten Sie es alle verstehen, auch ohne dass ich es Ihnen sage. Danach können wir das Programm verwenden, um alle IDs mit Kommas zu verketten und die Namenswerte mit Anführungszeichen und Kommas zu verarbeiten. Danach können wir mit der Aufgabe fortfahren, Duplikate zu entfernen. Die Effizienz hat sich deutlich erhöht. . .

Einige Leser verwenden jedoch möglicherweise Bedingungen, die Likes und andere Bedingungen enthalten, die den Index ungültig machen. In diesem Fall können wir die Daten einfach klassifizieren, die Daten in jeder Kategorie separat prüfen und nachdem alle Daten abgefragt wurden, können wir das Programm verwenden, um nach Duplikaten zu suchen und die zum Löschen erforderlichen Daten zu entfernen.

Anhang: MySQL RAND-Abfrageoptimierung und Zufallsabfrageoptimierung

Jeder weiß, dass bei zufälligen Abfragen die Funktion rand() verwendet werden muss, aber wenn die Datenmenge eine bestimmte Höhe erreicht, lässt sich die Abfrageeffizienz deutlich steigern. Na und? Lassen Sie uns eine Optimierung dieser Abfrage in Betracht ziehen.

Meine Optimierungsmethode besteht darin, mithilfe eines Programms eine Zufallsauswahl vorzunehmen und dann mithilfe eines Grenzwerts den Wert zu ermitteln. Halten wir die Grundidee fest.

Fragen Sie zunächst die Anzahl der Daten ab, die die Bedingungen erfüllen, wählen Sie dann mit der Rand-Funktion von PHP zufällig einen Wert innerhalb dieses Zahlenbereichs aus und fragen Sie ihn dann direkt ab.

SQL-Beispiel:

select count(*) from test where $where; )

$offset = rand(0,$count)

select * from test where $where limit $offset,1; (Abfrage der benötigten Daten)

Jeder kann es versuchen. Bei etwa fünf Millionen Daten ist die Abfragegeschwindigkeit mindestens zehnmal schneller als bei der Abfragemethode der MySQL RAND-Funktion.

Okay, das ist alles zu diesem Teilen.

Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen auf dieser Site ansehen: „MySQL-Abfragekenntnisse“, „Zusammenfassung der allgemeinen MySQL-Funktionen“, „MySQL-Protokolloperationskenntnisse“, „Zusammenfassung der MySQL-Transaktionsoperationskenntnisse“, „MySQL-gespeicherte Prozedurkenntnisse“ und „Zusammenfassung der MySQL-Datenbanksperrenkenntnisse“.

Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist.

Das könnte Sie auch interessieren:
  • Analyse von MySQL: einzelne Tabelle eindeutig, mehrere Tabellen nach Abfrage gruppieren, um doppelte Datensätze zu entfernen
  • mysql SELECT-Anweisung zum Entfernen doppelter Informationen in einem Feld
  • Detailliertes Beispiel zum Entfernen doppelter Daten in MySQL
  • Eine SQL-Anweisung schließt die MySQL-Deduplizierung ab und behält eine
  • MySQL-Deduplizierungsmethoden
  • MySQL-Entwicklungskenntnisse: JOIN-Update und Datenduplikationsprüfung/Deduplizierung
  • Mysql doppelte Daten löschen Mysql Datendeduplizierung
  • Detaillierte Erklärung zweier Methoden zur Deduplizierung in MySQL und Beispielcode
  • Eine einfache Methode zum Zusammenführen und Entfernen doppelter MySQL-Tabellen
  • So optimieren Sie den MySQL-Deduplizierungsvorgang maximal
  • Einige Hinweise zur MySQL-Self-Join-Deduplizierung

<<:  Vue-Entwicklungsbaumstrukturkomponenten (Komponentenrekursion)

>>:  So verwenden Sie reguläre Ausdrücke, um Platzhalterdomänennamen in Nginx automatisch abzugleichen

Artikel empfehlen

Detailliertes Tutorial zur Installation von mysql5.7.21 unter Windows

In diesem Artikel finden Sie das Installations-Tu...

Detaillierte Erklärung der Definition und Funktion von Trennzeichen in MySQL

Wenn Sie MySQL zum ersten Mal lernen, verstehen S...

So vergleichen Sie zwei Datenbanktabellenstrukturen in MySQL

Während des Entwicklungs- und Debugging-Prozesses...

Verwenden von js zur Realisierung eines dynamischen Hintergrunds

In diesem Artikelbeispiel wird der spezifische Co...

Docker-Lösung zum Anmelden ohne Root-Rechte

Wenn Sie den Docker-Befehl zum ersten Mal verwend...

So erweitern Sie Vue Router-Links in Vue 3

Vorwort Das Tag <router-link> ist ein großa...

Beispiel einer Vorrendering-Methode für eine Vue-Einzelseitenanwendung

Inhaltsverzeichnis Vorwort vue-cli 2.0 Version vu...

Detaillierte Einführung in das CSS-Prioritätswissen

Bevor wir über die CSS-Priorität sprechen, müssen...

Tutorial zur Installation von Pycharm und Ipython unter Ubuntu 16.04/18.04

Unter Ubuntu 18.04 1. sudo apt install python ins...

SQL Get gespeicherte Prozedur gibt Datenprozessanalyse zurück

Dieser Artikel stellt hauptsächlich die Analyse d...

So legen Sie die Tabellenbreite in IE8 und Chrome fest

Wenn die oben genannten Einstellungen in IE8 und C...