Übersicht über den Ausführungsplan
Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance
Um Abfragen ausführen zu können, muss das SQL Server-Datenbankmodul die Anweisung analysieren, um eine effiziente Methode für den Zugriff auf die erforderlichen Daten und deren Verarbeitung zu ermitteln. Diese Analyse wird von einer Komponente verarbeitet, die als „Abfrageoptimierer“ bezeichnet wird. Die Eingaben für den Abfrageoptimierer bestehen aus der Abfrage, dem Datenbankschema (Tabellen- und Indexdefinitionen) und den Datenbankstatistiken. Der Abfrageoptimierer erstellt einen oder mehrere Abfrageausführungspläne, die manchmal als Abfragepläne oder Ausführungspläne bezeichnet werden. Der Abfrageoptimierer wählt einen Abfrageplan mit einer Reihe von Heuristiken aus, um kompilierungszeit und Planoptimalität auszugleichen, um einen guten Abfrageplan zu finden.
Tipp
Weitere Informationen zu Abfrageverarbeitungs- und Abfrageausführungsplänen finden Sie in den Abschnitten Optimierung von SELECT-Anweisungen und Zwischenspeicherung des Ausführungsplans und der Wiederverwendung des Leitfadens zur Abfrageverarbeitungsarchitektur.
Informationen zum Anzeigen von Ausführungsplänen in SQL Server Management Studio und Azure Data Studio finden Sie unter Anzeigen und Speichern von Ausführungsplänen.
Ein Abfrageausführungsplan ist die Definition von:
Die Reihenfolge des Zugriffs auf die Quelltabellen.
In der Regel gibt es viele Abfolgen, in denen der Datenbankserver auf die Basistabellen zugreifen kann, um das Resultset zu erstellen. Wenn eine
SELECT
-Anweisung z.B. auf drei Tabellen verweist, könnte der Datenbankserver zuerst aufTableA
zugreifen, dann die Daten ausTableA
verwenden, um die entsprechenden Zeilen ausTableB
zu extrahieren, und dann die Daten ausTableB
verwenden, um Daten ausTableC
zu extrahieren. Die anderen Abfolgen, in denen der Datenbankserver auf die Tabellen zugreifen kann, lauten:
TableC
,TableB
,TableA
oder
TableB
,TableA
,TableC
oder
TableB
,TableC
,TableA
oder
TableC
,TableA
,TableB
Die Methoden, die verwendet werden, um Daten aus den einzelnen Tabellen zu extrahieren.
Für den Zugriff auf die Daten in den einzelnen Tabellen gibt es in der Regel unterschiedliche Methoden. Wenn nur wenige Zeilen mit bestimmten Schlüsselwerten erforderlich sind, kann der Datenbankserver einen Index verwenden. Wenn alle Zeilen der Tabelle erforderlich sind, kann der Datenbankserver die Indizes übergehen und einen Tabellenscan ausführen. Wenn alle Zeilen in einer Tabelle erforderlich sind, aber ein Index vorhanden ist, dessen Schlüsselspalten sich in einer
ORDER BY
Tabelle befinden, speichert das Ausführen einer Indexüberprüfung anstelle einer Tabellenüberprüfung möglicherweise eine separate Sortierung des Resultsets. Wenn eine Tabelle klein ist, sind Tabellenscans möglicherweise die effizienteste Methode für fast alle Zugriffe auf die Tabelle.Die Methoden, die für Berechnungen und zum Filtern, Aggregieren und Sortieren von Daten aus den einzelnen Tabellen verwendet werden.
Beim Zugriff auf Daten von Tabellen aus gibt es verschiedene Methoden zum Durchführen von Berechnungen für Daten – z. B. Berechnen von skalaren Werten –, zum Aggregieren und Sortieren von Daten wie im Abfragetext definiert – z. B. bei Verwendung einer
GROUP BY
- oderORDER BY
-Klausel –, und zum Filtern von Daten – z. B. bei Verwendung einerWHERE
- oderHAVING
-Klausel.
Siehe auch
- Überwachen und Abstimmen der Leistung
- Leistungsüberwachungs- und Optimierungstools
- Leitfaden zur Architektur der Abfrageverarbeitung
- Liveabfragestatistiken
- Aktivitätsmonitor
- Überwachen der Leistung mit dem Abfragespeicher
- sys.dm_exec_query_statistics_xml
- sys.dm_exec_query_profiles
- Ablaufverfolgungsflags
- Referenz zu logischen und physischen Showplanoperatoren
Nächste Schritte
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für