In SQL Server können Sie das SET SHOWPLAN_XML
verwenden -Anweisung, um detaillierte Informationen darüber zurückzugeben, wie eine T-SQL-Anweisung in Form eines wohldefinierten XML-Dokuments ausgeführt wird.
Es ähnelt SHOWPLAN_ALL
, außer dass SHOWPLAN_ALL
gibt seinen Datensatz von Zeilen zurück, die einen hierarchischen Baum bilden.
Sie können SHOWPLAN_XML
festlegen entweder auf ON
oder OFF
.
Wenn SHOWPLAN_XML
ist ON
, werden alle nachfolgenden T-SQL-Anweisungen nicht ausgeführt. Stattdessen gibt SQL Server Ausführungsinformationen für die Anweisung zurück (ohne sie auszuführen).
Beispiel
Hier ist ein Beispiel zur Veranschaulichung.
SET SHOWPLAN_XML ON;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO
Beachten Sie, dass SET SHOWPLAN_XML
kann nicht innerhalb einer gespeicherten Prozedur angegeben werden und muss die einzige Anweisung in einem Stapel sein.
Das Ergebnis, das Sie erhalten, kann davon abhängen, welches Tool Sie für den Zugriff auf SQL Server verwenden.
Wenn ich dies in Azure Data Studio ausführe, kann ich auf die verschiedenen Registerkarten klicken, um eine andere Ansicht des Ergebnisses zu erhalten.
Die Ergebnisse Registerkarte zeigt den rohen XML-String an:
Ein Klick auf die Zeile öffnet das XML-Dokument in einem neuen Tab:
Der Abfrageplan Registerkarte zeigt eine grafische Darstellung des Ergebnisses:
Die Top-Operationen tab präsentiert die Daten in tabellarischer Form, die es Ihnen ermöglicht, die Daten nach verschiedenen Metriken zu sortieren:
Funktioniert nicht?
Wenn es bei Ihnen nicht funktioniert, vergewissern Sie sich, dass Sie tatsächlichen Ausführungsplan einschließen ist in SSMS nicht ausgewählt. Wenn dies ausgewählt ist, SET SHOWPLAN_XML ON
erzeugt keine XML-Showplan-Ausgabe.
Wie man es ausschaltet
Sie können es ausschalten, indem Sie SET SHOWPLAN_XML OFF
verwenden .
Sobald Sie dies getan haben, werden nachfolgende Anweisungen wie gewohnt ausgeführt.
SET SHOWPLAN_XML OFF;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO
Ergebnis:
Commands completed successfully. +---------+-----------+---------+-----------+-----------+ | CatId | CatName | DogId | DogName | GoodDog | |---------+-----------+---------+-----------+-----------| | 2 | Fluffy | 2 | Fluffy | 0 | +---------+-----------+---------+-----------+-----------+ (1 row affected) Commands completed successfully.
Ausführungsplan in GUIs
Wenn Sie ein grafisches Tool wie SSMS oder Azure Data Studio verwenden, haben Sie möglicherweise eine Verknüpfungsoption zum Anzeigen des geschätzten grafischen Abfrageausführungsplans. Dadurch können Sie den Abfrageplan anzeigen, ohne SET SHOWPLAN_XML ON
ausführen zu müssen .
So führen Sie einen geschätzten Abfrageplan aus:
- In SSMS können Sie Strg + L verwenden um dies zu tun. Oder Sie können auf Geschätzten Ausführungsplan anzeigen klicken oder klicken Sie mit der rechten Maustaste in das Abfragefenster und wählen Sie Geschätzten Ausführungsplan anzeigen aus . Dies erspart Ihnen das Umschalten von
SHOWPLAN_XML
in Ihrem Code ein- und ausschalten. - In Azure Data Studio können Sie auf Erklären klicken Schaltfläche über dem Abfragefenster.
Sie können auch einen tatsächlichen Abfrageplan ausführen:
- In SSMS auf der Abfrage Klicken Sie im Menü auf Aktuellen Ausführungsplan einschließen oder klicken Sie auf Aktuellen Ausführungsplan einschließen Symbolleistenschaltfläche.
- Gehen Sie in Azure Data Studio zu Ansicht> Befehlspalette und geben Sie Aktuelle Abfrage mit aktuellem Plan ausführen ein .
Beachten Sie, dass wenn Aktuellen Ausführungsplan einbeziehen in SSMS ausgewählt ist, das SET SHOWPLAN_XML ON
erzeugt keine XML-Showplan-Ausgabe. Versuchen Sie, Aktuellen Ausführungsplan einschließen zu löschen Taste, bevor Sie dieses SET
verwenden Option.
Ich finde jedoch, dass Azure Data Studio das Gegenteil tut SHOWPLAN_XML ON
scheint die Run Current Query with Actual Plan zu überschreiben Option, außer wenn ich Explain ausführe zuerst (geschätzter Abfrageplan), danach aktuelle Abfrage mit aktuellem Plan ausführen plötzlich funktioniert (die Actual Rows und Tatsächliche Hinrichtungen Spalten der Top-Operationen tab gibt die entsprechenden Daten zurück).
Es ist wahrscheinlich am besten, die XML-Showplan-Option zu deaktivieren, bevor Sie andere Methoden zum Abrufen des Abfrageplans verwenden.