MySQL effiziente AbfrageMySQL verzichtet auf „Group By“, um die Geschwindigkeit des Left Join zu erhöhen (vorausgesetzt, es wird ein Index hinzugefügt). Benutzertabelle: 100.000 Daten Beispiel 1: Etwa 200 Sekunden SELECT U.id, A.favorite_count FROM (SELECT-ID vom Benutzer) U LINKS VERBINDEN ( - Anzahl der Likes SELECT favorite_by AS user_id, SUM(favorite_count) AS favorite_count VON Favorit GRUPPE NACH Favorit_nach ) A ON U.id=A.Benutzer-ID LINKS VERBINDEN ( -- Anzahl der Kommentare SELECT user_id, COUNT(*) AS comment_count VON Fotokommentar GROUP BY Benutzer-ID ) B ON U.id=B.Benutzer-ID Beispiel 2: Mehr als 1 Sekunde Wählen Sie uf.user_id, uf.favorite_count, COUNT(pc.id) als comment_count aus ( wähle u.id als Benutzer-ID, SUM(f.favorite_count) als Favoritenanzahl aus (SELECT-ID vom Benutzer) u LEFT JOIN Favorit f auf f.favorite_by = u.id GROUP BY u.id ) LINKS BEITRETEN Fotokommentar PC auf pc.user_id = uf.user_id GRUPPE NACH uf.user_id Anhang: So verknüpfen Sie 3 Tabellen in MySQL effizientFür die folgenden drei Tabellen Join-Anweisung wählen * ab t1 trete t2 bei (t1.a=t2.a) trete t3 bei (t2.b=t3.b) wobei t1.c>=X und t2.c>=Y und t3.c>=Z; Wenn es als straight_join umgeschrieben wird, wie gibt man die Verbindungsreihenfolge an und wie erstellt man Indizes für die drei Tabellen? Versuchen Sie, den BKA-Algorithmus zu verwenden Bei Verwendung von BKA wird die Abfrage direkt verschachtelt, anstatt „zuerst das Ergebnis der Verknüpfung zweier Tabellen zu berechnen und dann die Verknüpfung mit der dritten Tabelle durchzuführen“. Spezifische Implementierung: Wählen Sie unter den drei Bedingungen t1.c>=X, t2.c>=Y und t3.c>=Z die Tabelle mit den wenigsten Daten nach dem Filtern als erste treibende Tabelle aus. An diesem Punkt können die folgenden zwei Situationen auftreten. Wenn Tabelle t1 oder t3 ausgewählt ist, ist der Rest festgelegt:
Gleichzeitig müssen wir auch einen Index für Feld c der ersten Treibertabelle erstellen. Im zweiten Fall, wenn die erste ausgewählte treibende Tabelle die Tabelle t2 ist, müssen die Filtereffekte der anderen beiden Bedingungen ausgewertet werden. Die Idee besteht darin, den Datensatz der an jedem Join beteiligten treibenden Tabelle so klein wie möglich zu halten, da dadurch unsere treibende Tabelle kleiner wird. ZusammenfassenDies ist das Ende dieses Artikels über MySQL-effiziente Abfragen, Left Join und Group By. Weitere relevante Inhalte zu MySQL-effizienten Abfragen finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Der Interviewer fragte, wie man in CSS ein festes Seitenverhältnis erreicht
>>: Tipps zum Erstellen zweidimensionaler Arrays in JavaScript
Bild herunterladen Docker-Pull OpenJDK Erstellen ...
Inhaltsverzeichnis 1. Einführung in SELinux 2. Gr...
Dieser Artikel stellt hauptsächlich die dynamisch...
Der Originalcode lautet: <div Klasse = "K...
Vorwort Kürzlich stieß ich in einem Projekt auf e...
MySQL Workbench – Modellierungs- und Designtool 1...
In diesem Artikel wird der spezifische Code von j...
Inhaltsverzeichnis 1. Einleitung 2. Analyse des f...
Das Konzept des Schlosses ①. Im wirklichen Leben ...
Daten sind das wichtigste Kapital eines Unternehm...
Inhaltsverzeichnis Warum einen Debugger verwenden...
Vorwort Ich habe in letzter Zeit das Gefühl, dass...
Wir sehen oft, dass Anzeigen nach ein paar Sekund...
wie folgt: -m, --memory Speicherlimit, das Format...
Vorwort Der Befehl apt-get ist ein Paketverwaltun...