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

Implementierung einer Warenkorbfunktion basierend auf Vuex

In diesem Artikelbeispiel wird der spezifische Co...

So verwenden Sie das Realip-Modul im Nginx-Grundlagenlernen

Vorwort Es gibt zwei Arten von Nginx-Modulen: off...

So ändern Sie die Zeichensatzkodierung in MySQL 5.5/5.6 unter Linux auf UTF8

1. Melden Sie sich bei MySQL an und verwenden Sie...

Spezifische Verwendung von useRef in React

Ich glaube, dass Leute, die Erfahrung mit React h...

Ein Artikel, der Ihnen zeigt, wie Sie Vue-Komponenten erstellen und verwenden

Inhaltsverzeichnis 1. Was ist eine Komponente? 2....

Sprechen Sie über wichtige Unterverzeichnisprobleme im Linux-System

/etc/fstab Partitionen/Festplatten automatisch mo...

Fünf Möglichkeiten zum Durchlaufen von Objekten in JavaScript Beispielcode

Inhaltsverzeichnis Vorbereiten Fünf Waffen für … ...

Einführung in die reaktive Funktion toRef-Funktion ref-Funktion in Vue3

Inhaltsverzeichnis Reaktive Funktion Verwendung: ...