Ü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 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. Die anderen Abfolgen, in denen der Datenbankserver auf die Tabellen zugreifen kann, lauten:
    TableC, TableB, TableAoder
    TableB, TableA, TableCoder
    TableB, TableC, TableAoder
    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 BYTabelle 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- oder ORDER BY-Klausel –, und zum Filtern von Daten – z. B. bei Verwendung einer WHERE- oder HAVING-Klausel.

Siehe auch

Nächste Schritte