Heim Datenbank MySQL-Tutorial 6 einfache Tipps zur Optimierung der Leistung der SQL-SELECT-Anweisung

6 einfache Tipps zur Optimierung der Leistung der SQL-SELECT-Anweisung

Feb 22, 2017 am 11:12 AM

Die Leistungsoptimierung von SELECT-Anweisungen ist manchmal eine sehr zeitaufwändige Aufgabe und folgt meiner Meinung nach dem Pareto-Prinzip. 20 % des Aufwands führen wahrscheinlich zu 80 % der Leistungsverbesserung, und es kann sein, dass Sie 80 % der Zeit benötigen, um die anderen 20 % der Leistungsverbesserung zu erzielen. Sofern Sie nicht auf der Venus arbeiten, wo jeder Tag 243 Tagen auf der Erde entspricht, besteht eine gute Chance, dass Ihnen aufgrund der Lieferfristen nicht genügend Zeit bleibt, Ihre SQL-Abfragen zu optimieren.

Basierend auf meiner jahrelangen Erfahrung beim Schreiben und Ausführen von SQL-Anweisungen begann ich mit der Entwicklung einer Checkliste, auf die ich zurückgreife, wenn ich versuche, die Abfrageleistung zu verbessern. Ich beziehe mich darauf, bevor ich die Abfrageplanung durchführe und die Dokumentation für die von mir verwendete Datenbank lese, was manchmal komplex sein kann. Meine Checkliste ist keineswegs umfassend oder wissenschaftlich, sie ist eher eine konservative Berechnung, aber ich kann sagen, dass ich durch die Befolgung dieser einfachen Schritte in den meisten Fällen Leistungsverbesserungen erziele. Checkliste unten.

Indizes prüfen

Indizes sollten zu allen Feldern hinzugefügt werden, die in den WHERE- und JOIN-Teilen der SQL-Anweisung verwendet werden. Machen Sie diesen 3-minütigen SQL-Leistungstest. Lesen Sie die Ergebnisse unabhängig von Ihrer Note unbedingt mit Informationen durch.

Begrenzen Sie die Größe des Arbeitsdatensatzes

Überprüfen Sie die in diesen SELECT-Anweisungen verwendeten Tabellen, um zu sehen, ob Sie eine WHERE-Klausel zum Filtern anwenden können. Ein typisches Beispiel ist eine Abfrage, die gut funktioniert, wenn die Tabelle nur wenige tausend Zeilen enthält. Doch als die Anwendung wuchs, wurden die Abfragen langsamer. Die Lösung kann so einfach sein wie die Beschränkung der Abfrage auf die Anzeige von Daten für den aktuellen Monat.

Wenn Ihre Abfrageanweisung eine Unterabfrage hat, achten Sie darauf, die Filterung auf die innere Anweisung der Unterabfrage anzuwenden, nicht auf die äußere Anweisung.

Wählen Sie nur die Felder aus, die Sie benötigen

Zusätzliche Felder erhöhen normalerweise die Textur der zurückgegebenen Daten, was dazu führt, dass mehr Daten an den SQL-Client zurückgegeben werden. Außerdem:

• Bei der Verwendung von Anwendungen mit Berichts- und Analysefunktionen ist die Berichtsleistung manchmal gering, da das Berichtstool die empfangenen Daten in detaillierter Form aggregieren muss.

• Gelegentlich kann die Abfrage schnell genug ausgeführt werden, aber Ihr Problem könnte ein Netzwerkproblem sein, da große Mengen detaillierter Daten über das Netzwerk an den Berichtsserver gesendet werden.

• Bei Verwendung eines spaltenorientierten DBMS werden nur die von Ihnen ausgewählten Spalten von der Festplatte gelesen. Je weniger Spalten Sie in Ihre Abfrage einbeziehen, desto geringer ist der E/A-Overhead.

Unnötige Tabellen entfernen

Der Grund für das Entfernen unnötiger Tabellen ist derselbe wie der Grund für das Entfernen unnötiger Felder in der Abfrageanweisung.

Das Schreiben von SQL-Anweisungen ist ein Prozess, der normalerweise eine große Anzahl iterativer Prozesse zum Schreiben und Testen von SQL-Anweisungen erfordert. Während der Entwicklung fügen Sie einer Abfrage möglicherweise Tabellen hinzu, die möglicherweise keine Auswirkungen auf die vom SQL-Code zurückgegebenen Daten haben. Sobald die SQL ordnungsgemäß ausgeführt wird, stelle ich fest, dass viele Leute ihre Skripte nicht überprüfen und Tabellen löschen, die keinen Einfluss oder Einfluss auf die endgültigen zurückgegebenen Daten haben. Durch das Entfernen von JOINS-Vorgängen mit unnötigen Tabellen reduzieren Sie eine große Anzahl von Prozessen, die die Datenbank ausführen muss. Manchmal, beispielsweise beim Entfernen von Spalten, werden Sie feststellen, dass die von Ihnen reduzierten Daten über die Datenbank zurückkommen.

Entfernen der Outer-Join-Abfrage

Das ist leichter gesagt als getan, es hängt davon ab, wie viel Einfluss die Änderung des Tabelleninhalts hat. Eine Lösung besteht darin, die Operation OUTER JOINS zu entfernen, indem Platzhalter in den Zeilen beider Tabellen platziert werden. Angenommen, Sie verfügen über die folgenden Tabellen, die durch die Definition von OUTER JOINS sicherstellen, dass alle Daten zurückgegeben werden:

CUSTOMER_ID CUSTOMER_NAME
1 John Doe
2 Mary Jane
3 Peter Pan
4 Joe Soap
CUSTOMER_ID SALES_PERSON
NULL Newbee Smith
2 Oldie Jones
1 Another Oldie
NULL Greenhorn

Die Lösung besteht darin, der Zeile in der Kundentabelle einen Platzhalter hinzuzufügen und alle NULL-Werte in der Verkaufstabelle auf den Platzhalter zu aktualisieren.

CUSTOMER_ID CUSTOMER_NAME
0 NO CUSTOMER
1 John Doe
2 Mary Jane
3 Peter Pan
4 Joe Soap
CUSTOMER_ID SALES_PERSON
0 Newbee Smith
2 Oldie Jones
1 Another Oldie
0 Greenhorn

Sie beseitigen nicht nur die Abhängigkeit von der OUTER JOIN-Operation, sondern standardisieren auch die Darstellung von Verkäufern ohne Kunden. Andere Entwickler müssen keine zusätzlichen Anweisungen wie ISNULL(customer_id, „Noch kein Kunde“) schreiben.

Berechnete Felder in JOIN- und WHERE-Klauseln entfernen

Dies ist ein weiterer Trick, der manchmal leichter gesagt als getan ist, es hängt davon ab, dass Sie das Tabellenschema ändern. Die Größe von die Berechtigungen. Das in der Join-Anweisung verwendete berechnete Feld kann als neues Feld in der Tabelle erstellt werden. Angesichts der folgenden SQL-Anweisung:

FROM sales a 
JOIN budget b ON    ((YEAR(a.sale_date)* 100) + MONTH(a.sale_date)) = b.budget_year_month
Nach dem Login kopieren

Das Hinzufügen einer Spalte mit Jahr und Monat in der Verkaufstabelle kann die Leistung verbessern. Die aktualisierte SQL-Anweisung lautet wie folgt:

SELECT * FROM PRODUCTSFROM sales a 
JOIN budget b ON    a.sale_year_month = b.budget_year_month
Nach dem Login kopieren

Zusammenfassung

Die obigen Vorschläge können auf die folgenden Punkte reduziert werden:

• Überprüfen Sie den Index

• Arbeiten Sie mit dem minimal erforderlichen Datensatz

• Entfernen Sie unnötige Felder und Tabellen

• Entfernen Sie Berechnungsoperationen in Ihren JOIN- und WHERE-Klauseln

Wenn alle diese Vorschläge Ihre SQL-Abfrageleistung nicht verbessern, besteht der letzte Vorschlag darin, zu Venus zu wechseln. Sie benötigen lediglich einen Tag, um Ihre SQL-Anweisungen zu optimieren.

Das Obige ist der Inhalt von 6 einfachen Tipps zur Optimierung der Leistung der SQL SELECT-Anweisung. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was ist der Unterschied zwischen HQL und SQL im Hibernate-Framework? Was ist der Unterschied zwischen HQL und SQL im Hibernate-Framework? Apr 17, 2024 pm 02:57 PM

HQL und SQL werden im Hibernate-Framework verglichen: HQL (1. Objektorientierte Syntax, 2. Datenbankunabhängige Abfragen, 3. Typsicherheit), während SQL die Datenbank direkt betreibt (1. Datenbankunabhängige Standards, 2. Komplexe ausführbare Datei). Abfragen und Datenmanipulation).

Verwendung der Divisionsoperation in Oracle SQL Verwendung der Divisionsoperation in Oracle SQL Mar 10, 2024 pm 03:06 PM

„Verwendung der Divisionsoperation in OracleSQL“ In OracleSQL ist die Divisionsoperation eine der häufigsten mathematischen Operationen. Während der Datenabfrage und -verarbeitung können uns Divisionsoperationen dabei helfen, das Verhältnis zwischen Feldern zu berechnen oder die logische Beziehung zwischen bestimmten Werten abzuleiten. In diesem Artikel wird die Verwendung der Divisionsoperation in OracleSQL vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Zwei Arten von Divisionsoperationen in OracleSQL In OracleSQL können Divisionsoperationen auf zwei verschiedene Arten durchgeführt werden.

Was bedeutet das Identitätsattribut in SQL? Was bedeutet das Identitätsattribut in SQL? Feb 19, 2024 am 11:24 AM

Was ist Identität in SQL? In SQL ist Identität ein spezieller Datentyp, der zum Generieren automatisch inkrementierender Zahlen verwendet wird. Er wird häufig verwendet, um jede Datenzeile in einer Tabelle eindeutig zu identifizieren. Die Spalte „Identität“ wird oft in Verbindung mit der Primärschlüsselspalte verwendet, um sicherzustellen, dass jeder Datensatz eine eindeutige Kennung hat. In diesem Artikel wird die Verwendung von Identity detailliert beschrieben und es werden einige praktische Codebeispiele aufgeführt. Die grundlegende Möglichkeit, Identity zu verwenden, besteht darin, Identit beim Erstellen einer Tabelle zu verwenden.

Vergleich und Unterschiede der SQL-Syntax zwischen Oracle und DB2 Vergleich und Unterschiede der SQL-Syntax zwischen Oracle und DB2 Mar 11, 2024 pm 12:09 PM

Oracle und DB2 sind zwei häufig verwendete relationale Datenbankverwaltungssysteme, die jeweils über ihre eigene, einzigartige SQL-Syntax und -Eigenschaften verfügen. In diesem Artikel werden die SQL-Syntax von Oracle und DB2 verglichen und unterschieden und spezifische Codebeispiele bereitgestellt. Datenbankverbindung Verwenden Sie in Oracle die folgende Anweisung, um eine Verbindung zur Datenbank herzustellen: CONNECTusername/password@database. In DB2 lautet die Anweisung zum Herstellen einer Verbindung zur Datenbank wie folgt: CONNECTTOdataba

Ausführliche Erläuterung der Funktion „Tag festlegen' in den dynamischen SQL-Tags von MyBatis Ausführliche Erläuterung der Funktion „Tag festlegen' in den dynamischen SQL-Tags von MyBatis Feb 26, 2024 pm 07:48 PM

Interpretation der dynamischen SQL-Tags von MyBatis: Detaillierte Erläuterung der Verwendung von Set-Tags. MyBatis ist ein hervorragendes Persistenzschicht-Framework. Es bietet eine Fülle dynamischer SQL-Tags und kann Datenbankoperationsanweisungen flexibel erstellen. Unter anderem wird das Set-Tag zum Generieren der SET-Klausel in der UPDATE-Anweisung verwendet, die sehr häufig bei Aktualisierungsvorgängen verwendet wird. In diesem Artikel wird die Verwendung des Set-Tags in MyBatis ausführlich erläutert und seine Funktionalität anhand spezifischer Codebeispiele demonstriert. Was ist Set-Tag? Set-Tag wird in MyBati verwendet

So beheben Sie den 5120-Fehler in SQL So beheben Sie den 5120-Fehler in SQL Mar 06, 2024 pm 04:33 PM

Lösung: 1. Überprüfen Sie, ob der angemeldete Benutzer über ausreichende Berechtigungen zum Zugriff auf oder zum Betrieb der Datenbank verfügt, und stellen Sie sicher, dass der Benutzer über die richtigen Berechtigungen verfügt. 2. Überprüfen Sie, ob das Konto des SQL Server-Dienstes über die Berechtigung zum Zugriff auf die angegebene Datei verfügt Ordner und stellen Sie sicher, dass das Konto über ausreichende Berechtigungen zum Lesen und Schreiben der Datei oder des Ordners verfügt. 3. Überprüfen Sie, ob die angegebene Datenbankdatei von anderen Prozessen geöffnet oder gesperrt wurde. Versuchen Sie, die Datei zu schließen oder freizugeben, und führen Sie die Abfrage erneut aus . Versuchen Sie es als Administrator. Führen Sie Management Studio aus als usw.

Wie verwende ich SQL-Anweisungen zur Datenaggregation und Statistik in MySQL? Wie verwende ich SQL-Anweisungen zur Datenaggregation und Statistik in MySQL? Dec 17, 2023 am 08:41 AM

Wie verwende ich SQL-Anweisungen zur Datenaggregation und Statistik in MySQL? Datenaggregation und Statistiken sind sehr wichtige Schritte bei der Durchführung von Datenanalysen und Statistiken. Als leistungsstarkes relationales Datenbankverwaltungssystem bietet MySQL eine Fülle von Aggregations- und Statistikfunktionen, mit denen Datenaggregation und statistische Operationen problemlos durchgeführt werden können. In diesem Artikel wird die Methode zur Verwendung von SQL-Anweisungen zur Durchführung von Datenaggregation und Statistiken in MySQL vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Verwenden Sie zum Zählen die COUNT-Funktion. Die COUNT-Funktion wird am häufigsten verwendet

Datenbanktechnologie-Wettbewerb: Was sind die Unterschiede zwischen Oracle und SQL? Datenbanktechnologie-Wettbewerb: Was sind die Unterschiede zwischen Oracle und SQL? Mar 09, 2024 am 08:30 AM

Datenbanktechnologie-Wettbewerb: Was sind die Unterschiede zwischen Oracle und SQL? Im Datenbankbereich sind Oracle und SQL Server zwei hoch angesehene relationale Datenbankverwaltungssysteme. Obwohl beide zur Kategorie der relationalen Datenbanken gehören, gibt es viele Unterschiede zwischen ihnen. In diesem Artikel befassen wir uns mit den Unterschieden zwischen Oracle und SQL Server sowie deren Funktionen und Vorteilen in praktischen Anwendungen. Zunächst einmal gibt es Unterschiede in der Syntax zwischen Oracle und SQL Server.

See all articles