Eine kurze Diskussion zur MySQL-Select-Optimierungslösung

Eine kurze Diskussion zur MySQL-Select-Optimierungslösung

Beispiele aus dem wirklichen Leben

Haben wir festgestellt, dass viele Abfrageanweisungen im Unternehmen „select * xxxx“ lauten?

Die Idee dahinter ist wohl, dass andere „select *“ geschrieben haben, also werde ich es auch schreiben und mir so eine Menge Ärger ersparen.

Langsame Abfrage

  • Überlegen Sie zunächst, ob bei der von uns verwendeten Datenbankabfrageanweisung zu viele Daten abgerufen werden.
  • Tatsächlich können die meisten Abfragen mit geringer Leistung oft durch eine Reduzierung der abgerufenen Datenmenge optimiert werden.
  • Denn select * führt zu zusätzlichem I/O, Speicher- und CPU-Verbrauch auf dem Server

Drei Indikatoren für langsamen Abfrage-Overhead in der Datenbank

  • Entsprechende Zeit
  • Anzahl der gescannten Zeilen
  • Anzahl der zurückgegebenen Zeilen

Wenn Sie zum Index gehen

wähle * von stu, wobei ID = 1;

Der Index optimiert die Abfrage und gibt nur zehn Daten zurück. Wenn kein ID-Index vorhanden ist, wird geschätzt, dass auf Hunderte oder Tausende von Datenzeilen zugegriffen wird.

Tipps: Verwenden Sie den Befehl EXPLAIN in MySQL, um die Anzahl der Zeilen anzuzeigen, die den Zeilen entsprechen

Tatsächlich ist es am besten, nicht übereinstimmende Datensätze auf Speichermodulebene über „where“ herauszufiltern. Die zweitbeste Situation besteht darin, den Indextrefferscan abzudecken und nicht übereinstimmende Datensätze auf Serverebene über „where“ herauszufiltern, ohne zur Abfrage zur Tabelle zurückzukehren. Die beste Situation besteht darin, Daten aus der Datentabelle zurückzugeben und dann Datensätze herauszufiltern, die die Bedingungen nicht erfüllen.

So optimieren Sie

Verwenden Sie die Indexabdeckung, um alle benötigten Spalten in den Index aufzunehmen, sodass wir nicht zur Abfrage in die Tabelle zurückkehren müssen und die Tabelle trennen können

3. Refaktorisieren Sie die Abfrage (Sie können eine große Abfrage in kleinere aufteilen)

Zum Beispiel: count, limit, max()

zählen

Die beste Optimierung für „count“ besteht im Hinzufügen einer Übersichtstabelle, da „count“ zwangsläufig eine große Anzahl von Zeilen scannen muss.

Limit

Beim Paging kommt es häufig zu Einschränkungen, wie im folgenden Code gezeigt.

Wähle die ID aus der Stu-Sortierung nach ID-Limit 1000,20;

Diese Anweisung fragt 1020 Daten ab, verwirft dann die ersten 1000 und gibt die 20 Daten von 1000 bis 1020 zurück. Die beste Möglichkeit zur Optimierung besteht in der Verwendung des Index, sodass die Grenzabfrage in eine Abfrage mit bekannter Position umgewandelt werden kann.

Maximalwert und Minimalwert Min&Max

Stellen wir uns zunächst vor, dass wir bei Verwendung des Primärschlüsselindexes den ersten Wert bei der Abfrage als den Mindestwert verwenden, den wir zurückgeben möchten. Wir können auch den Primärschlüsselindex verwenden und die Datenmenge mit „limit“ steuern, um den Effekt der min()-Funktion zu erzielen und min zu ersetzen.

ID auswählen 
von stu 
Verwenden Sie den Index (primay), wobei Adresse = „bj“, Grenze 1;

Dadurch werden so wenige Datensätze wie möglich gescannt.

Zum Abschluss noch zwei Fragen zur Entspannung.

Finden Sie das zweithöchste Gehalt in der Tabelle „Mitarbeiter“ (Gehalt)
+----+--------+
| ID | Gehalt |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
Ergebnisse +---------------------+
| Zweithöchstes Gehalt |
+---------------------+
| 200 |
+---------------------+
Antwort: select max(Gehalt) ZweithöchstesGehalt
vom Mitarbeiter 
wobei Gehalt < (max(Gehalt) auswählen)
vom Mitarbeiter)
Suchen Sie in der Tabelle „Person“ nach allen doppelten E-Mail-Adressen.
+----+---------+
| ID | E-Mail |
+----+---------+
| 1 | [email protected] |
| 2 | [email protected] |
| 3 | [email protected] |
+----+---------+

Ergebnisse+---------+
| E-Mail |
+---------+
| [email protected] |
+---------+

Antwort: Wählen Sie „E-Mail von Person“ 
Gruppieren nach E-Mail 
mit Anzahl (E-Mail) >= 2;

Dies ist das Ende dieses Artikels über MySQL-Select-Optimierungslösungen. Weitere relevante Inhalte zur MySQL-Select-Optimierung finden Sie in früheren Artikeln auf 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:
  • MySQL-Optimierungslösung: Aktivieren Sie das Protokoll für langsame Abfragen
  • MySQL-Abfrageoptimierung: Eine Tabellenoptimierungslösung für 1 Million Daten
  • Gründe und Optimierungslösungen für langsames MySQL-Limit-Paging mit großen Offsets
  • Eine kurze Diskussion über die MySQL-Optimierungslösung für große Tabellen
  • MySQL-Lösung zur funktionalen Indexoptimierung
  • Referenz zur MySQL-Optimierungslösung
  • Mehrere gängige Optimierungslösungen für MySQL

<<:  Zusammenfassung und Analyse häufig verwendeter Docker-Befehle und Beispiele

>>:  CSS-Stil zum Zentrieren des HTML-Tags im Browser

Artikel empfehlen

So verwenden Sie den JS-Code-Compiler Monaco

Vorwort Meine Anforderungen sind Syntaxhervorhebu...

Dateifreigabe zwischen Ubuntu und Windows unter VMware

In diesem Artikel wird die Methode zum Teilen von...

So ändern Sie schnell das Hostattribut eines MySQL-Benutzers

Wenn Sie sich remote bei MySQL anmelden, gelten f...

So vermeiden Sie die Duplizierung von Daten beim Einfügen in einen MySql-Batch

Inhaltsverzeichnis Vorwort 1. Einfügen von ignore...

Verwenden von jQuery zum Implementieren des Karusselleffekts

Was ich Ihnen heute zeige, ist die Verwendung von...

Verwenden Sie PSSH zur Stapelverwaltung von Linux-Servern

pssh ist eine in Python implementierte Open-Sourc...

CSS3 verwendet var()- und calc()-Funktionen, um Animationseffekte zu erzielen

Wissenspunkte in der Vorschau anzeigen. Animation...

Beispielmethode zum Bereitstellen eines React-Projekts auf Nginx

Testprojekt: react-demo Klonen Sie Ihr React-Demo...

Methode zur Optimierung von MySQL-Gruppenabfragen

MySQL behandelt GROUP BY- und DISTINCT-Abfragen i...

...