von Markus Winand.

SQL Server Ausführungspläne erstellen


SQL Server kennt mehrere Wege, einen Ausführungsplan zu erstellen. Die zwei Wichtigsten sind:

Grafisch

Ein grafischer Ausführungsplan lässt sich mit dem Management Studio leicht abrufen, kann aber nicht gut kopiert werden. Das liegt daran, dass wichtige Informationen erst angezeigt werden, wenn man die Maus über die einzelnen Operationen bewegt („hover“).

Tabellarisch

Der tabellarische Ausführungsplan ist zwar nicht so übersichtlich, zeigt aber alle relevanten Informationen auf einmal an. Beim Kopieren des Ausführungsplanes geht keine Information verloren.

Grafische Ausführungspläne erstellen

Einen grafischen Ausführungsplan kann man mit einer der beiden hervor­ge­ho­benen Schaltflächen erstellen.

Die linke Schaltfläche erstellt den Ausführungsplan sofort, ohne die SQL-Anweisung auszuführen. Die Rechte zeigt den Ausführungsplan an, nach­dem eine SQL-Anweisung ausgeführt wurde.

In beiden Fällen wird die grafische Darstellung des Ausführungsplanes im Reiter „Execution Plan“ bei den Ergebnissen angezeigt.

Die grafische Darstellung kann man mit ein wenig Übung gut lesen. Sie zeigt jedoch nur die wichtigste Information an: Die Operationen sowie die Tabellen und Indizes, auf die sie zugreifen.

Das Management Studio zeigt weitere Details an, wenn man mit der Maus über die Operationen fährt („mouseover“ bzw. „hover“). Daher ist es nicht möglich, die gesamten Informationen auf einmal am Bildschirm zu sehen, um sie, zum Beispiel durch einen Screenshot, zu dokumentieren.

Hinweis in eigener Sache

Ich lebe von SQL-Schulungen, anderen SQL-Dienstleistungen und dem Verkauf meines Buches. Mehr dazu auf winand.at.

Tabellarische Ausführungspläne erstellen

Die tabellarische Darstellung eines SQL Server Ausführungsplanes kann man zum Beispiel bei der Ausführung mit einem Profile erstellen:

SET STATISTICS PROFILE ON

Diese Anweisung bewirkt, dass alle darauffolgenden SQL-Anweisungen ein zusätzliches Ergebnis liefern. Eine select-Abfrage liefert dann also zwei Ergebnisse zurück – zuerst das eigentliche Ergebnis der Abfrage, dann den Ausführungsplan.

Die tabellarische Darstellung ist so breit, dass sie im SQL Server Management Studio kaum gelesen werden kann.

Der Vorteil ist aber, dass der Ausführungsplan kopiert werden kann, ohne Informationen zu verlieren – z. B., um den Ausführungsplan jemandem zu zeigen. Dazu ist es meist ausreichend, nur die Spalte StmtText zu kopieren:

select COUNT(*) from employees;
  |--Compute Scalar(DEFINE:([Expr1004]=CONVERT_IMPLICIT(...))
       |--Stream Aggregate(DEFINE:([Expr1005]=Count(*)))
            |--Index Scan(OBJECT:([employees].[employees_pk]))

Die Ausgabe tabellarischer Ausführungspläne kann durch die folgende Anweisung wieder deaktiviert werden:

SET STATISTICS PROFILE OFF

Über den Autor

Foto von Markus Winand

Markus Winand ist der SQL Renaissance Botschafter auf der Mission, Entwickler auf die Evolution von SQL im 21. Jahrhundert aufmerksam zu machen. Markus kann als Trainer, Sprecher und Berater auf winand.at engagiert werden.

Sein Buch bei Amazon kaufen

Titelbild von „SQL Performance Explained“: Eichhörnchen läuft durchs Grass

Die Essenz: SQL-Tuning auf 200 Seiten

Bei Amazon kaufen
(Taschenbuch)

Taschenbuch und PDF auch auf Markus' Webseite erhältlich.

Sein Training

Markus verwandelt veraltetes SQL-92-Wissen in solides und zeitgemäßes SQL-Know-how

Erfahren Sie mehr»

Nicht mit OFFSET blättern

Mehr info

Besuche meine Schwester-Seite!Seit SQL-92 hat sich einiges getan!

Die Use The Index, Luke! Tasse

Aufkleber, Bierdeckel, Bücher und Kaffeetassen. Alles was man beim Lernen braucht!

Zum Shop

Mit Markus Winand verbinden

Markus Winand auf LinkedInMarkus Winand auf XINGMarkus Winand auf Twitter
„Use The Index, Luke!“ von Markus Winand ist unter einer Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License lizenziert.
Impressum | Kontakt | KEINE GEWÄHR | Handelsmarken | Datenschutz und DSGVO | CC-BY-NC-ND 3.0 Lizenz