Beispiele aus dem wirklichen LebenHaben 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
Drei Indikatoren für langsamen Abfrage-Overhead in der Datenbank
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 SieVerwenden 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ählenDie beste Optimierung für „count“ besteht im Hinzufügen einer Übersichtstabelle, da „count“ zwangsläufig eine große Anzahl von Zeilen scannen muss. LimitBeim 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&MaxStellen 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:
|
<<: Zusammenfassung und Analyse häufig verwendeter Docker-Befehle und Beispiele
>>: CSS-Stil zum Zentrieren des HTML-Tags im Browser
Wir wissen, dass es in der Shell zwei Möglichkeit...
Inhaltsverzeichnis Modusparameter HashHistorie Ha...
MySQL-Daemon konnte nicht gestartet werden – Fehl...
Die domänenübergreifende Nginx-Konfiguration wird...
Beispielcode: importiere java.util.Random; import...
MySql Nullfeldbeurteilung und IFNULL-Fehlerverarb...
Wie erreicht man Internationalisierung in React? ...
Axios in Vue einfügen importiere Axios von „Axios...
Inhaltsverzeichnis Vorwort So lösen Sie Sudoku Fü...
In letzter Zeit wurden in neuen Projekten Springc...
Da wir Bilder hochladen möchten, müssen wir zunäc...
Die Tags dd und dt werden für Listen verwendet. N...
Domänenübergreifende Lösungen jsonp (get simulier...
In diesem Artikel wird der spezifische Code für J...
In diesem Artikel wird hauptsächlich der Beispiel...