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:
|
Inhaltsverzeichnis 1. Was ist ein Abschluss? 2. D...
Inhaltsverzeichnis 1. Master-Slave-Synchronisatio...
Wenn wir wissen, welche For-Schleife oder welcher...
Zugriff verweigert: Der Grund hierfür ist: Es lie...
MySQL ist eine kostenlose relationale Datenbank m...
1. px px ist die Abkürzung für Pixel, eine relati...
Manchmal benötigen unsere Seiten Eingabeaufforder...
Führen Sie den Befehl aus: glxinfo | grep renderi...
Vorwort Manchmal stößt man auf Geschäftstabellen,...
Jeder ist wahrscheinlich mit dem Auswahl-Dropdown...
Standort bedeutet „Positionierung“, was hauptsäch...
Ich freue mich sehr, an dieser Folge der Kartoffe...
Code kopieren Der Code lautet wie folgt: window.l...
Seit der Aktivierung des https-Zugriffs für die g...
Schwierigkeit Erstellung von zwei Masken für SVG-...