sql >> Databáze >  >> RDS >> Sqlserver

Jak SHOWPLAN_XML funguje v SQL Server

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ů.


  1. Vynutit Oracle vrátit TOP N řádků s SKIP LOCKED

  2. Oracle SQL plus jak ukončit příkaz v souboru SQL?

  3. Jak zobrazit data Unicode pomocí PHP

  4. Zotavení po havárii pro Galera Cluster nasazené do hybridního cloudu