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

Analyse der Prinzipien von Docker-Containern

Inhaltsverzeichnis 01 Was ist das Wesen eines Con...

CSS3-Mauszeiger-Übergangszoomeffekt

Das Folgende ist ein Bild-Zoom-Effekt, der in rei...

Liste der HTML-Tags und Hinweise zur Verwendung

Liste der HTML-Tags markieren Typ Name oder Bedeu...

Detaillierte Installation und Verwendung von Docker-Compose

Docker Compose ist ein Docker-Tool zum Definieren...

Codebeispiel für das Nutzungsszenario der Nginx-Domänenweiterleitung

Szenario 1: Aufgrund von Serverbeschränkungen ist...

LINUX Prüft, ob der Port belegt ist

Ich konnte nie herausfinden, ob der Port belegt i...

Mehrere Möglichkeiten zum einfachen Durchlaufen von Objekteigenschaften in JS

Inhaltsverzeichnis 1. Selbstaufzählbare Eigenscha...

So ändern Sie die Systemsprache von CentOS7 in vereinfachtes Chinesisch

veranschaulichen Bei einer Eigeninstallation des ...

Fortgeschrittene JavaScript-Programmierung: Variablen und Umfang

Inhaltsverzeichnis 1. Ursprungswert und Bezugswer...

4 Lösungen für CSS-Browserkompatibilitätsprobleme

Frontend ist ein harter Job, nicht nur weil sich ...