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

Überblick über die grundlegenden Bestandteile von HTML-Webseiten

<br />Die Informationen auf Webseiten besteh...

Vier Kategorien von CSS-Selektoren: Basis, Kombination, Attribut, Pseudoklasse

Was ist ein Selektor? Die Rolle des Selektors bes...

So spielen Sie lokale Mediendateien (Video und Audio) mit HTML und JavaScript ab

Erstens kann JavaScript aus Sicherheitsgründen ni...

So verarbeiten Sie sehr große Formularbeispiele mit Vue+ElementUI

Aufgrund von Geschäftsanpassungen im Unternehmen ...

Miniprogramm zur Implementierung des Paging-Effekts

In diesem Artikelbeispiel wird der spezifische Co...

Vue3.0 implementiert die Kapselung von Kontrollkästchenkomponenten

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Erklärung des MySQL-Datenbank-LIKE-Operators in Python

Der LIKE-Operator wird in der WHERE-Klausel verwe...

So fügen Sie Docker ein Zertifikat hinzu

1. Upgrade-Vorgang: sudo apt-get update Probleme ...

Detaillierte Erläuterung des zeitgesteuerten Protokollschneidens von Nginx

Vorwort Standardmäßig werden Nginx-Protokolle in ...

JS erkennt den Fall der Eliminierung von Sternen

In diesem Artikelbeispiel wird der spezifische JS...