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:
|
Manchmal müssen wir den Hyperlink <a> anstel...
HTML hat versucht, sich von der Präsentation weg ...
Schauen Sie sich zunächst das offizielle Tutorial...
Codebeispiel Fügen Sie im Head-Tag eine Codezeile ...
Ich habe kürzlich an einem Projekt gearbeitet – Bu...
Inhaltsverzeichnis Vorwort Untergeordnete Kompone...
In diesem Artikel wird der spezifische Code von j...
1 Einleitung Wenn wir SQL-Anweisungen schreiben, ...
Verständnis von Umfragen Tatsächlich liegt der Sc...
Inhaltsverzeichnis Vorwort Optimierung SSR Import...
<div Klasse="Box"> <img /> ...
1. Die Bedeutung von Webstandards verstehen - War...
Inhaltsverzeichnis Ergebnisse erzielen Einführung...
MySQL ist ein relationales Datenbankverwaltungssy...
Vorwort JavaScript erfreut sich weiterhin wachsen...