SQL Performance Checkliste
Eine Checkliste, die Ihnen hilft, eine SQL-Abfrage zu untersuchen und deren Leistung zu verbessern…
Wie man Sie verwendet:
Gehen Sie jede Checkliste durch und antworten Sie auf Ja, Nein oder Weiß nicht.
Nutzen Sie die Antworten, um weitere Schritte oder Verbesserungsbereiche zu bestimmen.
Abschnitt 1: Abfragekontext und Erwartungen
- Gibt es eine klare Ziellaufzeit für diese Abfrage, auf die sich die Stakeholder einig sind?
☐ Ja ☐ Nein ☐ Weiß nicht - Ist die Abfrage im Vergleich zu ihrer historischen Leistung langsam, nicht nur "fühlt sich langsam an"? ☐ Ja ☐ Nein ☐ Weiß nicht
- Läuft die Abfrage häufig genug, sodass sich kleine Verzögerungen summieren?
☐ Ja ☐ Nein ☐ Weiß nicht - Ist die Langsamkeit für Nutzer oder für nachgelagerte Systeme sichtbar?
☐ Ja ☐ Nein ☐ Weiß nicht - Wird die Abfrage als Teil eines wichtigen Workflows ausgeführt?
☐ Ja ☐ Nein ☐ Weiß nicht
Abschnitt 2: Datenmerkmale
- Ist das zugrunde liegende Datenvolumen seit der Abfrage signifikant gewachsen?
☐ Ja ☐ Nein ☐ Weiß nicht - Sind eine kleine Anzahl von Werten für einen großen Teil der Zeilen verantwortlich?
☐ Ja ☐ Nein ☐ Weiß nicht - Arbeitet die Abfrage auf Tabellen, die kontinuierlich wachsen? ☐ Ja ☐ Nein ☐ Weiß nicht
- Ist die Abfrage sensitiv gegenüber Datumsbereichen oder gleitenden Fenstern?
☐ Ja ☐ Nein ☐ Weiß nicht - Variiert die Leistung je nachdem, welche Werte abgefragt werden? ☐ Ja ☐ Nein ☐ Weiß nicht
Abschnitt 3: Abfrageform & Logik
- Fügt die Abfrage mehrere große Tabellen zusammen? ☐ Ja ☐ Nein ☐ Weiß nicht
- Enthält die Abfrage Aggregationen über große Ergebnismengen? ☐ Ja ☐ Nein ☐ Weiß nicht
- Sind verschachtelte Abfragen oder abgeleitete Ergebnissets beteiligt?
☐ Ja ☐ Nein ☐ Weiß nicht - Liefert die Abfrage mehr Spalten, als tatsächlich benötigt werden? ☐ Ja ☐ Nein ☐ Weiß nicht
- Wird die Abfrage an mehreren Orten mit unterschiedlichen Eingaben wiederverwendet? ☐ Ja ☐ Nein ☐ Weiß nicht
Abschnitt 4: Signale des Ausführungsplans
- Ist ein Schritt für den Großteil der gesamten Ausführungskosten verantwortlich?
☐ Ja ☐ Nein ☐ Weiß nicht - Unterscheiden sich die geschätzten Zeilenzahlen signifikant von den tatsächlichen Zeilen?
☐ Ja ☐ Nein ☐ Weiß nicht - Zeigt der Plan, dass die Arbeit über viele Reihen hinweg wiederholt wird?
☐ Ja ☐ Nein ☐ Weiß nicht - Werden große Datensätze früher verarbeitet als erwartet? ☐ Ja ☐ Nein ☐ Weiß nicht
- Ändert sich der Ausführungsplan je nach Eingabewerten? ☐ Ja ☐ Nein ☐ Weiß nicht
- Enthält der Ausführungsplan Warnungen oder markierte (auffällige/problematische) Operatoren? ☐ Ja ☐ Nein ☐ Weiß nicht
Abschnitt 5: Signale für Index- und Zugangspfade
- Wird im Vergleich zu den zurückgegebenen Zeilen eine große Menge an Daten gelesen?
☐ Ja ☐ Nein ☐ Weiß nicht - Zeigt der Plan den vollständigen Datenzugriff an, wo gezielter Zugriff erwartet wurde?
☐ Ja ☐ Nein ☐ Weiß nicht - Findet das Filtern nach dem Lesen der Daten statt während des Zugriffs statt?
☐ Ja ☐ Nein ☐ Weiß nicht - Werden mehrere Zugriffspfade kombiniert, um die Abfrage zu erfüllen?
☐ Ja ☐ Nein ☐ Weiß nicht - Verschlechtert sich die Performance, wenn die Daten wachsen?
☐ Ja ☐ Nein ☐ Weiß nicht - Verwendet dieselbe Abfrage zu unterschiedlichen Zeiten unterschiedliche Zugriffspfade?
☐ Ja ☐ Nein ☐ Weiß nicht
Abschnitt 6: Umgebung & Nutzung
- Verhält sich die Abfrage in der Produktion anders als bei Test oder Entwicklung?
☐ Ja ☐ Nein ☐ Weiß nicht - Wird die Abfrage gleichzeitig von vielen Benutzern oder Prozessen ausgeführt?
☐ Ja ☐ Nein ☐ Weiß nicht - Wird die Abfrage interaktiv ausgeführt und auch von Hintergrundjobs?
☐ Ja ☐ Nein ☐ Weiß nicht - Variiert die Leistung je nach Tageszeit oder Systemlast?
☐ Ja ☐ Nein ☐ Weiß nicht - Ist die Abfrage empfindlich gegenüber Parameterwerten oder Benutzereingaben?
☐ Ja ☐ Nein ☐ Weiß nicht