Herausforderung: Abfrageoptimierung
Lassen Sie uns zwei Tabellen betrachten: BankAccounts
und eine zusätzliche Tabelle namens Transactions
.
BankAccounts table
Transactions table
Angenommen, wir möchten nur die Kontonummern abrufen, die mindestens eine Transaktion durchgeführt haben.
In dieser Aufgabe liegt eine nicht optimierte Abfrage vor. Ihre Aufgabe ist es, diese in einer optimaleren Weise umzuschreiben.
Hier ist eine Liste der wichtigsten Techniken zur Abfrageoptimierung:
-
Spalten explizit angeben: Anstatt das Sternchen (
*
) als Platzhalter zu verwenden, sollten Sie die Spaltennamen in Abfragen explizit angeben, um Leistung, Lesbarkeit und Wartbarkeit zu verbessern; -
Subabfragen minimieren: Reduzieren Sie die Verwendung von Subabfragen, um die Abfrageleistung zu optimieren. Ziehen Sie Alternativen wie Joins oder abgeleitete Tabellen in Betracht, um Komplexität und Overhead zu vermeiden;
-
Wiederholte IN-Operatoren vermeiden: Begrenzen Sie die Verwendung des
IN
-Operators in Abfragen, um Leistungseinbußen zu verhindern. Verwenden Sie stattdessenJOIN
- oderEXISTS
-Klauseln für effizientere Ausführungspläne; -
Joins logisch organisieren: Beginnen Sie SQL-Joins mit der Haupttabelle und fügen Sie anschließend verknüpfte Tabellen hinzu, um die Abfrageorganisation und die Optimierung durch die Datenbank-Engine zu verbessern;
-
Restriktive WHERE-Bedingungen verwenden: Verbessern Sie die Abfrageleistung, indem Sie restriktive Bedingungen in der
WHERE
-Klausel einfügen, um Zeilen zu filtern und die Ausführungsgeschwindigkeit zu erhöhen; -
Code in gespeicherte Prozeduren oder Funktionen auslagern: Kapseln Sie wiederkehrende Codeabschnitte in gespeicherte Prozeduren oder benutzerdefinierte Funktionen, um Wiederverwendbarkeit, Modularität und einfachere Wartung zu gewährleisten. Dies kann Redundanz verringern und SQL-Abfragen optimieren.
Swipe to start coding
Bitte die Abfrage optimaler umschreiben. Beachten Sie, dass nur Kontonummern abgerufen werden sollen, die mindestens eine Transaktion durchgeführt haben (Geld auf ein anderes Konto überwiesen haben), aufsteigend sortiert.
Hinweis
Verwenden Sie den Join-Typ
LEFT
oderINNER
, um diese Aufgabe zu lösen.
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Can you show me the unoptimized query?
What would an optimized query look like for this task?
Can you explain why the optimized query is better?
Awesome!
Completion rate improved to 4.35
Herausforderung: Abfrageoptimierung
Swipe um das Menü anzuzeigen
Lassen Sie uns zwei Tabellen betrachten: BankAccounts
und eine zusätzliche Tabelle namens Transactions
.
BankAccounts table
Transactions table
Angenommen, wir möchten nur die Kontonummern abrufen, die mindestens eine Transaktion durchgeführt haben.
In dieser Aufgabe liegt eine nicht optimierte Abfrage vor. Ihre Aufgabe ist es, diese in einer optimaleren Weise umzuschreiben.
Hier ist eine Liste der wichtigsten Techniken zur Abfrageoptimierung:
-
Spalten explizit angeben: Anstatt das Sternchen (
*
) als Platzhalter zu verwenden, sollten Sie die Spaltennamen in Abfragen explizit angeben, um Leistung, Lesbarkeit und Wartbarkeit zu verbessern; -
Subabfragen minimieren: Reduzieren Sie die Verwendung von Subabfragen, um die Abfrageleistung zu optimieren. Ziehen Sie Alternativen wie Joins oder abgeleitete Tabellen in Betracht, um Komplexität und Overhead zu vermeiden;
-
Wiederholte IN-Operatoren vermeiden: Begrenzen Sie die Verwendung des
IN
-Operators in Abfragen, um Leistungseinbußen zu verhindern. Verwenden Sie stattdessenJOIN
- oderEXISTS
-Klauseln für effizientere Ausführungspläne; -
Joins logisch organisieren: Beginnen Sie SQL-Joins mit der Haupttabelle und fügen Sie anschließend verknüpfte Tabellen hinzu, um die Abfrageorganisation und die Optimierung durch die Datenbank-Engine zu verbessern;
-
Restriktive WHERE-Bedingungen verwenden: Verbessern Sie die Abfrageleistung, indem Sie restriktive Bedingungen in der
WHERE
-Klausel einfügen, um Zeilen zu filtern und die Ausführungsgeschwindigkeit zu erhöhen; -
Code in gespeicherte Prozeduren oder Funktionen auslagern: Kapseln Sie wiederkehrende Codeabschnitte in gespeicherte Prozeduren oder benutzerdefinierte Funktionen, um Wiederverwendbarkeit, Modularität und einfachere Wartung zu gewährleisten. Dies kann Redundanz verringern und SQL-Abfragen optimieren.
Swipe to start coding
Bitte die Abfrage optimaler umschreiben. Beachten Sie, dass nur Kontonummern abgerufen werden sollen, die mindestens eine Transaktion durchgeführt haben (Geld auf ein anderes Konto überwiesen haben), aufsteigend sortiert.
Hinweis
Verwenden Sie den Join-Typ
LEFT
oderINNER
, um diese Aufgabe zu lösen.
Lösung
Danke für Ihr Feedback!
Awesome!
Completion rate improved to 4.35single