AusführungspläneExecution Plans

Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) JaAzure SQL-DatenbankAzure SQL DatabaseYesAzure SQL-DatenbankAzure SQL DatabaseAnwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) JaAzure SQL-DatenbankAzure SQL DatabaseYesAzure SQL-DatenbankAzure SQL Database

Um Abfragen ausführen zu können, muss die SQL Server-Datenbank-EngineSQL Server Database Engine die Anweisung analysieren, um die effizienteste Methode für den Zugriff auf die erforderlichen Daten zu ermitteln.To be able to execute queries, the SQL Server-Datenbank-EngineSQL Server Database Engine must analyze the statement to determine the most efficient way to access the required data. Diese Analyse wird von einer Komponente verarbeitet, die als „Abfrageoptimierer“ bezeichnet wird.This analysis is handled by a component called the Query Optimizer. Die Eingaben für den Abfrageoptimierer bestehen aus der Abfrage, dem Datenbankschema (Tabellen- und Indexdefinitionen) und den Datenbankstatistiken.The input to the Query Optimizer consists of the query, the database schema (table and index definitions), and the database statistics. Die Ausgabe des Abfrageoptimierers ist ein Abfrageausführungsplan, der manchmal auch als Abfrageplan oder Ausführungsplan bezeichnet wird.The output of the Query Optimizer is a query execution plan, sometimes referred to as a query plan, or execution plan.

In einem Abfrageausführungsplan wird Folgendes definiert:A query execution plan is a definition of the following:

  • Die Reihenfolge des Zugriffs auf die Quelltabellen.The sequence in which the source tables are accessed.
    In der Regel gibt es viele Abfolgen, in denen der Datenbankserver auf die Basistabellen zugreifen kann, um das Resultset zu erstellen.Typically, there are many sequences in which the database server can access the base tables to build the result set. Wenn eine SELECT-Anweisung z.B. auf drei Tabellen verweist, könnte der Datenbankserver zuerst auf TableA zugreifen, dann die Daten aus TableA verwenden, um die entsprechenden Zeilen aus TableB zu extrahieren, und dann die Daten aus TableB verwenden, um Daten aus TableC zu extrahieren.For example, if a SELECT statement references three tables, the database server could first access TableA, use the data from TableA to extract matching rows from TableB, and then use the data from TableB to extract data from TableC. Die anderen Abfolgen, in denen der Datenbankserver auf die Tabellen zugreifen kann, lauten:The other sequences in which the database server could access the tables are:
    TableC, TableB, TableAoderTableC, TableB, TableA, or
    TableB, TableA, TableCoderTableB, TableA, TableC, or
    TableB, TableC, TableAoderTableB, TableC, TableA, or
    TableC, TableA, TableBTableC, TableA, TableB

  • Die Methoden, die verwendet werden, um Daten aus den einzelnen Tabellen zu extrahieren.The methods used to extract data from each table.
    Für den Zugriff auf die Daten in den einzelnen Tabellen gibt es in der Regel unterschiedliche Methoden.Generally, there are different methods for accessing the data in each table. Wenn nur wenige Zeilen mit bestimmten Schlüsselwerten erforderlich sind, kann der Datenbankserver einen Index verwenden.If only a few rows with specific key values are required, the database server can use an index. Wenn alle Zeilen der Tabelle erforderlich sind, kann der Datenbankserver die Indizes übergehen und einen Tabellenscan ausführen.If all the rows in the table are required, the database server can ignore the indexes and perform a table scan. 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 eine andere Sortierung des Resultsets gespeichert werden.If all the rows in a table are required but there is an index whose key columns are in an ORDER BY, performing an index scan instead of a table scan may save a separate sort of the result set. Wenn es sich um eine sehr kleine Tabelle handelt, können Tabellenscans die effizienteste Methode für fast alle Zugriffe auf die Tabelle darstellen.If a table is very small, table scans may be the most efficient method for almost all access to the table.

  • Die Methoden, die für Berechnungen und zum Filtern, Aggregieren und Sortieren von Daten aus den einzelnen Tabellen verwendet werden.The methods used to compute calculations, and how to filter, aggregate, and sort data from each table.
    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- oder ORDER BY-Klausel –, und zum Filtern von Daten – z. B. bei Verwendung einer WHERE- oder HAVING-Klausel.As data is accessed from tables, there are different methods to perform calculations over data such as computing scalar values, and to aggregate and sort data as defined in the query text, for example when using a GROUP BY or ORDER BY clause, and how to filter data, for example when using a WHERE or HAVING clause.

Hinweis

SQL Server Management StudioSQL Server Management Studio verfügt über drei Optionen zum Anzeigen von Ausführungsplänen:has three options to display execution plans:

  • Der geschätzte Ausführungsplan ist der kompilierte Plan, der vom Abfrageoptimierer anhand von Schätzungen erzeugt wird.The Estimated Execution Plan is the compiled plan, as produced by the Query Optimizer based on estimations. Dies ist der Abfrageplan, der im Plancache gespeichert wird.This is the query plan that is stored in the plan cache.
  • Der * tatsächliche Ausführungsplan _ entspricht dem kompilierten Plan und enthält zusätzlich den zugehörigen Ausführungskontext.The *Actual Execution Plan _ is the compiled plan plus its execution context. Er wird _nach Abschluss der Abfrageausführung* verfügbar.It becomes available _*after the query execution has completed**. Dies umfasst die tatsächlichen Laufzeitinformationen, z. B. Ausführungswarnungen oder, in neueren Versionen von Datenbank-EngineDatabase Engine, die vergangene und die CPU-Zeit während der Ausführung.This includes actual runtime information such as execution warnings, or in newer versions of the Datenbank-EngineDatabase Engine, the elapsed and CPU time used during execution.
  • Die * Liveabfragestatistik entspricht dem kompilierten Plan und enthält dessen Ausführungskontext.The *Live Query Statistics _ is the compiled plan plus its execution context. Sie ist für _In-Flight-Abfrageausführungen* verfügbar und wird jede Sekunde aktualisiert.It is available for _*in-flight query executions**, and updated every second. Dies schließt Laufzeitinformationen ein, z. B. die tatsächliche Anzahl der Zeilen, die die Operatoren durchlaufen, die verstrichene Zeit und den geschätzten Abfragefortschritt.This includes runtime information such as the actual number of rows flowing through the operators, elapsed time, and the estimated query progress.

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.For more information on query processing and query execution plans, see the sections Optimizing SELECT statements and Execution Plan Caching and Reuse of the Query Processing Architecture Guide.

In diesem AbschnittIn This Section

Profilerstellungsinfrastruktur für Abfragen Query Profiling Infrastructure
Anzeigen und Speichern von Ausführungsplänen Display and Save Execution Plans
Vergleichen und Analysieren von Ausführungsplänen Compare and Analyze Execution Plans
PlanhinweislistenPlan Guides

Weitere InformationenSee Also

Überwachen und Optimieren der Leistung Monitor and Tune for Performance
Tools für die Leistungsüberwachung und -optimierung Performance Monitoring and Tuning Tools
Leitfaden zur Architektur der Abfrageverarbeitung Query Processing Architecture Guide
Live-Abfragestatistik Live Query Statistics
Aktivitätsmonitor Activity Monitor
Überwachen der Leistung mit dem Abfragespeicher Monitoring Performance by Using the Query Store
sys.dm_exec_query_statistics_xml sys.dm_exec_query_statistics_xml
sys.dm_exec_query_profiles sys.dm_exec_query_profiles
Ablaufverfolgungsflags Trace flags
Referenz zu logischen und physischen ShowplanoperatorenShowplan Logical and Physical Operators Reference