V SQL Server můžete použít SET SHOWPLAN_XML
příkaz vrátit podrobné informace o tom, jak bude příkaz T-SQL proveden, ve formě dobře definovaného dokumentu XML.
Je to podobné jako SHOWPLAN_ALL
, kromě SHOWPLAN_ALL
vrátí svou datovou sadu řádků, které tvoří hierarchický strom.
Můžete nastavit SHOWPLAN_XML
buď ON
nebo OFF
.
Když SHOWPLAN_XML
je ON
, nebudou provedeny všechny následující příkazy T-SQL. Místo toho SQL Server vrátí informace o provedení příkazu (aniž by jej provedl).
Příklad
Zde je příklad k demonstraci.
SET SHOWPLAN_XML ON;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO
Všimněte si, že SET SHOWPLAN_XML
nelze zadat uvnitř uložené procedury a musí to být jediný příkaz v dávce.
Výsledek, který získáte, může záviset na nástroji, který používáte pro přístup k SQL Server.
Když to spustím v Azure Data Studio, můžu kliknout na různé karty a získat jiný pohled na výsledek.
Výsledky karta zobrazuje nezpracovaný řetězec XML:
Kliknutím na řádek se dokument XML otevře na nové kartě:
Plán dotazů karta zobrazí grafické znázornění výsledku:
Nejlepší operace karta zobrazuje data v tabulkovém formátu, který umožňuje seřadit data podle různých metrik:
Nefunguje?
Pokud to pro vás nefunguje, ujistěte se, že zahrňte skutečný plán provedení není vybráno v SSMS. Když je toto vybráno, SET SHOWPLAN_XML ON
neprodukuje výstup XML Showplan.
Jak to vypnout
Můžete jej vypnout pomocí SET SHOWPLAN_XML OFF
.
Jakmile to uděláte, následující příkazy se provedou jako obvykle.
SET SHOWPLAN_XML OFF;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO
Výsledek:
Commands completed successfully. +---------+-----------+---------+-----------+-----------+ | CatId | CatName | DogId | DogName | GoodDog | |---------+-----------+---------+-----------+-----------| | 2 | Fluffy | 2 | Fluffy | 0 | +---------+-----------+---------+-----------+-----------+ (1 row affected) Commands completed successfully.
Prováděcí plán v GUI
Pokud používáte grafický nástroj, jako je SSMS nebo Azure Data Studio, můžete mít možnost zástupce pro zobrazení odhadovaného grafického plánu provádění dotazů. To vám umožní zobrazit plán dotazů, aniž byste museli spouštět SET SHOWPLAN_XML ON
.
Spuštění odhadovaného plánu dotazů:
- V SSMS můžete použít Ctrl + L udělat toto. Nebo můžete kliknout na Zobrazit odhadovaný plán provedení nebo klikněte pravým tlačítkem v okně dotazu a vyberte Zobrazit plán odhadovaného provedení . To vám ušetří nutnost zapínat
SHOWPLAN_XML
zapnout a vypnout v kódu. - V Azure Data Studio můžete kliknout na Vysvětlit tlačítko nad oknem dotazu.
Můžete také spustit skutečný plán dotazů:
- V SSMS na Dotaz klikněte v nabídce Zahrnout skutečný plán provádění nebo klikněte na Zahrnout skutečný plán provádění tlačítko na panelu nástrojů.
- V Azure Data Studio přejděte na Zobrazit> Paleta příkazů a zadejte Spustit aktuální dotaz se skutečným plánem .
Všimněte si, že pokud Zahrnout skutečný plán provádění je vybráno v SSMS, SET SHOWPLAN_XML ON
volba nevytváří výstup XML Showplan. Zkuste vymazat Zahrnout skutečný plán provádění před použitím tohoto SET
možnost.
Zjistil jsem však, že Azure Data Studio dělá opak SHOWPLAN_XML ON
Zdá se, že přepisuje Spustit aktuální dotaz se skutečným plánem možnost, pokud nespustím příkaz Vysvětlit nejprve (odhadovaný plán dotazů), poté Spustit aktuální dotaz se skutečným plánem najednou funguje (Skutečné řádky a Skutečné provedení sloupce Nejčastější operace tab vrátí příslušná data).
Pravděpodobně bude nejlepší vypnout možnost XML Showplan před použitím jiných metod pro načtení plánu dotazů.