Für das, was ich heute schreiben werde, lief das Programm fast 7 Stunden und speicherte 10 Millionen Datensätze in der Datenbank. —— Worüber ich heute sprechen möchte, ist ein Beispiel der IF()-Funktion der MySQL-Datenbank. Die konkreten Szenarien sind wie folgt: Schauen wir uns zunächst die Tabellenstruktur an: CREATE TABLE `Nachricht` ( `id` varchar(30) NICHT NULL, `Titel` varchar(30) DEFAULT NULL, `Inhalts`-Text, `send_time` Datum/Uhrzeit DEFAULT NULL, `Typ` int(1) DEFAULT NULL COMMENT '1: Systembenachrichtigung, 2: Beschwerdevorschlag', `status` int(1) DEFAULT NULL COMMENT '0: wartet auf Senden, 1: Erfolg, 2: Fehler', PRIMÄRSCHLÜSSEL (`id`) )ENGINE=InnoDB STANDARD-CHARSET=utf8; Die konkreten Anforderungen bestehen darin, jeweils die Gesamtzahl sowie die erfolgreiche und fehlgeschlagene Anzahl der Systembenachrichtigungen und Beschwerdevorschläge zu zählen. Wenn wir auf ein solches Problem stoßen, besteht unsere allgemeine Idee darin, durch Typgruppierung die Gesamtzahl der Systembenachrichtigungen, Beschwerden und Vorschläge abzufragen und dann zwei Unterabfragen zu verwenden, um die Anzahl der erfolgreichen und fehlgeschlagenen Elemente zu zählen. Das SQL lautet wie folgt: WÄHLEN COUNT(1) insgesamt, m.Typ, (WÄHLEN ANZAHL(1) VON Nachricht ms WO ms.status = 1 UND m.type = ms.type) Erfolgssumme, (WÄHLEN ANZAHL(1) Von Nachricht mf WO mf.status = 1 UND m.Typ = mf.Typ) failtotal VON Nachricht m GROUP BY m.Typ Werfen wir einen Blick auf die Laufzeit. Das Zählen von 10 Millionen Daten dauert etwa 6 Minuten und 18 Sekunden . Gibt es also eine einfachere und schnellere Möglichkeit zum Zählen? Natürlich gibt es die, und das ist die if()-Funktion, über die wir heute hauptsächlich sprechen. Grundlegende Syntax IF(expr1, expr2, expr3) gibt den Wert von expr2 zurück, wenn der Wert von expr1 wahr ist, und gibt den Wert von expr3 zurück, wenn der Wert von expr1 falsch ist. Es ist ein einfacher ternärer Ausdruck. Vorgehensweise Lassen Sie uns über die Idee sprechen. Wenn wir die Anzahl der erfolgreichen Ergebnisse zählen, können wir if(status=1,1,0) wie folgt schreiben. Wenn status==1, gibt es 1 zurück, andernfalls 0. Anschließend können wir die Anzahl der erfolgreichen Ergebnisse mit der Funktion SUM() addieren. Durchführung Die SQL-Anweisung lautet wie folgt: WÄHLEN COUNT(1) insgesamt, m.Typ, SUMME(WENN(m.status = 1,1,0)) Erfolgssumme, SUMME(WENN(m.status != 1,1,0)) failtotal VON Nachricht m GRUPPE NACH m.Typ; Sieht das nicht viel einfacher aus als die obige Unterabfrage? Werfen wir einen Blick auf die Laufzeit, die nur 1 Minute und 30 Sekunden beträgt. Ist das nicht viel schneller? Und, hast du es heute gelernt? Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
Cooper sprach über den visuellen Pfad des Benutze...
Tutorial-Reihe MySQL-Reihe: Grundlegende Konzepte...
Mit dem Befehl „Find“ können Sie in einem angegeb...
Nachdem wir die grundlegenden Vorgänge von Docker...
<br />Der Inhalt dieser Site ist Original. B...
Die Entwicklung der Docker-Technologie bietet ein...
1. Voraussetzungen Wir verwenden zum Importieren ...
Dieser Artikel beschreibt verschiedene Möglichkei...
In diesem Artikel wird die Implementierungsmethod...
Umsetzungsprinzip Die Hauptgrafik besteht aus zwe...
Aus der Tomcat-Konfigurationsdatei können wir ers...
Inhaltsverzeichnis 1. IDEA lädt das Docker-Plugin...
Inhaltsverzeichnis MySQL-Mehrversionen-Parallelit...
In diesem Artikel wird der spezifische Code von J...
Inhaltsverzeichnis Was ist eine Mindmap? Wie zeic...