Sind Sie immer noch Select *?

Sind Sie immer noch Select *?

Es gibt viele Gründe, warum eine Anwendung langsam wie eine Kuh ist. Es kann am Netzwerk, an der Systemarchitektur oder an der Datenbank liegen.

Wie kann also die Ausführungsgeschwindigkeit von Datenbank-SQL-Anweisungen verbessert werden? Manche würden sagen, dass die Leistungsoptimierung die Aufgabe von Datenbankadministratoren (DBAs) ist. Tatsächlich hat die Leistungsoptimierung jedoch auch viel mit Programmierern zu tun.

Wenn Sie einige Optimierungstipps für die im Programm eingebetteten SQL-Anweisungen beachten, können Sie mit halbem Aufwand das doppelte Ergebnis erzielen.

Tipp 1: Verwenden Sie beim Vergleichsoperator „=“ statt „<>“

"=" erhöht die Wahrscheinlichkeit der Verwendung des Index.

Tipp 2 : Wenn Sie wissen, dass es nur ein Abfrageergebnis gibt, verwenden Sie „LIMIT 1“

Mit „LIMIT 1“ können vollständige Tabellenscans vermieden werden und der Scan wird nicht fortgesetzt, sobald das entsprechende Ergebnis gefunden wurde.

Tipp 3 : Wählen Sie den richtigen Datentyp für Ihre Spalte

Wenn Sie TINYINT verwenden können, verwenden Sie nicht SMALLINT. Wenn Sie SMALLINT verwenden können, verwenden Sie nicht INT. Sie kennen den Grund. Je weniger Festplatten- und Speicherverbrauch, desto besser.

1.1 Wie definiert man Boolesche Daten in MySQL wie in Java? Tatsächlich definiert MySQL den Boolean-Datentyp nicht direkt. Er kann nur als tinyint(1) definiert werden. Wenn Boolean gleich 1 ist, stellt es wahr dar, und wenn Boolean gleich 2 ist, stellt es falsch dar.

1.2 Der Long-Datentyp entspricht dem Bigint-Datentyp in der MySQL-Datenbank;

Tipp 4 : Große DELETE-, UPDATE- oder INSERT-Abfragen in mehrere kleinere Abfragen aufteilen

Ist es nicht sehr beeindruckend, eine SQL-Anweisung mit Dutzenden oder Hunderten Zeilen schreiben zu können? Um jedoch eine bessere Leistung und eine bessere Kontrolle über Ihre Daten zu erzielen, können Sie sie in mehrere kleinere Abfragen aufteilen.

Tipp 5: Verwenden Sie UNION ALL statt UNION, wenn der Ergebnissatz Duplikate zulässt

Da UNION ALL keine Duplikate entfernt, ist es effizienter als UNION.

Tipp 6 : Um den gleichen Ergebnissatz mehrfach zu erhalten, halten Sie die SQL-Anweisung konsistent

Der Zweck besteht darin, den Abfragepuffer voll auszunutzen.

Um beispielsweise Produktpreise basierend auf Region und Produkt-ID abzufragen, lautet die erste Verwendung:

Wenn Sie dieselbe Abfrage zum zweiten Mal ausführen, achten Sie bitte darauf, dass die obigen Anweisungen konsistent sind. Vertauschen Sie beispielsweise nicht die Reihenfolge von ID und Region in der Where-Anweisung.

Tipp 7 : Vermeiden Sie die Verwendung von „SELECT *“

Wenn Sie nicht alle Spalten in der Tabelle abfragen, sollten Sie die Verwendung von SELECT * möglichst vermeiden, da dadurch ein vollständiger Tabellenscan durchgeführt wird und die Indizes nicht effektiv genutzt werden können. Dies erhöht die Belastung des Datenbankservers und den Netzwerk-E/A-Overhead zwischen diesem und dem Anwendungsclient.

Tipp 8: Verwenden Sie so oft wie möglich Indizes in der WHERE-Klausel

Geben Sie einfach Ihr Bestes, nicht alle Spalten. Sie sollten sich an die örtlichen Gegebenheiten anpassen und Anpassungen basierend auf den tatsächlichen Bedingungen vornehmen, da zu viele Indizes manchmal die Leistung beeinträchtigen können.

Tipp 9: Verwenden Sie so oft wie möglich Indizes in JOIN-Klauseln

Auch hier gilt: „Gib dein Bestes“, nicht alle Spalten.

Tipp 10: ORDER BY-Spalten sollten so oft wie möglich indiziert werden

Die Leistung ist auch besser, wenn die ORDER BY-Spalten indiziert sind.

Tipp 11: Verwenden Sie LIMIT, um Paging-Logik zu implementieren

Es verbessert nicht nur die Leistung, sondern reduziert auch unnötige Netzwerkübertragungen zwischen Datenbanken und Anwendungen.

Tipp 12: Verwenden Sie das Schlüsselwort EXPLAIN, um den Ausführungsplan anzuzeigen

EXPLAIN kann die Indexnutzung und gescannte Zeilen untersuchen.

andere

Es gibt viele Möglichkeiten, SQL zu optimieren, und dieselben Abfrageergebnisse können auf viele verschiedene Arten abgefragt werden. Tatsächlich besteht die beste Methode darin, den Test in der Entwicklungsumgebung mit dem realistischsten Datensatz und der realistischsten Hardwareumgebung durchzuführen und ihn dann in der Produktionsumgebung freizugeben.

Oben finden Sie die vom Herausgeber vorgestellte detaillierte Integration von MySql Select *. Ich hoffe, dass sie für alle hilfreich ist. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!

Das könnte Sie auch interessieren:
  • Einführung in den Rückgabewerttyp von Mybatis Select Count(*)
  • Ereignisfilter mit Abfrage SELECT * FROM __InstanceModificationEvent WITHIN
  • Unterschiede und Ausführungsmethoden von Select count(*), Count(1) und Count(column)
  • Der Unterschied und die Ausführungsmethode von Select count(*) und Count(1) in SQL Server
  • Wählen Sie * aus der sp_who-Lösung
  • Warum MySQL die Verwendung von SELECT * nicht empfiehlt

<<:  js zur Realisierung eines Web-Musikplayers

>>:  Zusammenfassung der Wissenspunkte zur Synchronisierung und zum gegenseitigen Ausschluss zwischen Linux-Threads

Artikel empfehlen

Canvas zeichnet Rubbellos-Effekt

In diesem Artikel wird der spezifische Code zum Z...

So implementieren Sie das Rasterlayout mit Intervallen perfekt auf der Seite

Typische Layoutbeispiele Wie im obigen Bild gezei...

Remote-Entwicklung mit VSCode und SSH

0. Warum brauchen wir Remote-Entwicklung? Bei der...

Alibaba Cloud Server Ubuntu Konfigurations-Tutorial

Da für den Import benutzerdefinierter Ubuntu-Imag...

Beispiel für die Migration einer MySQL-Online-Protokollbibliothek

Ich möchte Ihnen von einem aktuellen Fall erzähle...

Detaillierte Erklärung zur Installation von MySQL in der Alibaba Cloud

Als leichte Open-Source-Datenbank wird MySQL häuf...

vue3+ts+EsLint+Prettier Standardcode-Implementierung

Inhaltsverzeichnis verwenden Verwendung von EsLin...

Details zur Verwendung der JS-Tag-Syntax

Inhaltsverzeichnis 1. Einführung in Label-Anweisu...

Zwei Möglichkeiten, den 30-Sekunden-Werbecode aus dem Youku-Video zu entfernen

Ich glaube, jeder kennt dieses Gefühl: Ein Video m...

Eine kurze Diskussion über den Spaß von :focus-within in CSS

Ich glaube, einige Leute haben dieses Bild gesehe...

JavaScript implementiert Produktdetails der E-Commerce-Plattform

In diesem Artikel wird ein allgemeines Beispiel f...