Übersicht über den Ausführungsplan
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance
Um Abfragen ausführen zu können, muss die SQL Server-Datenbank-Engine die Anweisung analysieren, um einen effizienten Weg für den Zugriff auf die erforderlichen Daten und deren Verarbeitung zu finden. 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 Hilfe einer Reihe von Heuristiken aus, um ein Gleichgewicht zwischen Kompilierungszeit und Optimalität des Plans herzustellen und so einen guten Abfrageplan zu finden.
Tipp
Weitere Informationen zur Abfrageverarbeitung und den Abfrageausführungsplänen finden Sie in den Abschnitten Optimieren von SELECT-Anweisungen und Zwischenspeichern und Wiederverwenden von Ausführungsplänen des Handbuchs zur Architektur der Abfrageverarbeitung.
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 einer Tabelle erforderlich sind, die Tabelle jedoch über einen Index verfügt, dessen Schlüsselspalten in einer
ORDER BY
-Klausel verwendet werden, kann durch die Durchführung eines Indexscans anstelle eines Tabellenscans ein anderes Resultsets gespeichert werden. Wenn es sich um eine kleine Tabelle handelt, können Tabellenscans die effizienteste Methode für fast alle Zugriffe auf die Tabelle darstellen.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.
Zugehöriger Inhalt
- Überwachen und Optimieren der Leistung
- Tools für die Leistungsüberwachung und -optimierung
- Leitfaden zur Architektur der Abfrageverarbeitung
- Live-Abfragestatistik
- Aktivitätsmonitor
- Überwachen der Leistung mithilfe des Abfragespeichers
- sys.dm_exec_query_statistics_xml
- sys.dm_exec_query_profiles
- DBCC TRACEON – Ablaufverfolgungsflags (Transact-SQL)
- Referenz für logische und physische Showplanoperatoren
- Profilerstellungsinfrastruktur für Abfragen
- Anzeigen und Speichern von Ausführungsplänen
- Vergleichen und Analysieren von Ausführungsplänen
- Planhinweislisten