In SQL Server kunt u de SET SHOWPLAN_XML
statement om gedetailleerde informatie te retourneren over hoe een T-SQL-statement wordt uitgevoerd, in de vorm van een goed gedefinieerd XML-document.
Het lijkt op SHOWPLAN_ALL
, behalve dat SHOWPLAN_ALL
retourneert zijn dataset van rijen die een hiërarchische boom vormen.
U kunt SHOWPLAN_XML
. instellen naar ofwel ON
of OFF
.
Wanneer SHOWPLAN_XML
is ON
, worden alle volgende T-SQL-instructies niet uitgevoerd. In plaats daarvan retourneert SQL Server uitvoeringsinformatie voor de instructie (zonder deze uit te voeren).
Voorbeeld
Hier is een voorbeeld om te demonstreren.
SET SHOWPLAN_XML ON;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO
Merk op dat SET SHOWPLAN_XML
kan niet worden opgegeven in een opgeslagen procedure en moet de enige instructie in een batch zijn.
Het resultaat dat u krijgt, hangt mogelijk af van de tool die u gebruikt om toegang te krijgen tot SQL Server.
Wanneer ik dit in Azure Data Studio uitvoer, kan ik op de verschillende tabbladen klikken om een ander beeld van het resultaat te krijgen.
De Resultaten tabblad geeft de onbewerkte XML-tekenreeks weer:
Als u op de rij klikt, wordt het XML-document geopend in een nieuw tabblad:
Het queryplan tab geeft een grafische weergave van het resultaat:
De Topactiviteiten tab presenteert de gegevens in tabelvorm waarmee u de gegevens kunt sorteren op verschillende meetwaarden:
Werkt niet?
Als het niet voor u werkt, zorg er dan voor dat Inclusief daadwerkelijk uitvoeringsplan is niet geselecteerd in SSMS. Wanneer dit is geselecteerd, SET SHOWPLAN_XML ON
produceert geen XML Showplan-uitvoer.
Hoe het uit te schakelen
Je kunt het uitschakelen met SET SHOWPLAN_XML OFF
.
Zodra je dit hebt gedaan, worden de volgende instructies normaal uitgevoerd.
SET SHOWPLAN_XML OFF;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO
Resultaat:
Commands completed successfully. +---------+-----------+---------+-----------+-----------+ | CatId | CatName | DogId | DogName | GoodDog | |---------+-----------+---------+-----------+-----------| | 2 | Fluffy | 2 | Fluffy | 0 | +---------+-----------+---------+-----------+-----------+ (1 row affected) Commands completed successfully.
Uitvoeringsplan in GUI's
Als u een grafisch hulpprogramma gebruikt, zoals SSMS of Azure Data Studio, hebt u mogelijk een snelkoppelingsoptie om het geschatte grafische uitvoeringsplan voor query's te bekijken. Hierdoor kunt u het queryplan bekijken zonder dat u SET SHOWPLAN_XML ON
. hoeft uit te voeren .
Een geschat zoekplan uitvoeren:
- In SSMS kun je Ctrl + L . gebruiken om dit te doen. Of u kunt klikken op Geschat uitvoeringsplan weergeven of klik met de rechtermuisknop in het queryvenster en selecteer Geschat uitvoeringsplan weergeven . Dit voorkomt dat u
SHOWPLAN_XML
moet draaien aan en uit in je code. - In Azure Data Studio kunt u klikken op de Uitleggen knop boven het vraagvenster.
U kunt ook een echt zoekplan uitvoeren:
- In SSMS, op de Query menu, klik op Inclusief feitelijk uitvoeringsplan of klik op Inclusief daadwerkelijk uitvoeringsplan werkbalkknop.
- Ga in Azure Data Studio naar Bekijken> Opdrachtenpalet en typ Huidige zoekopdracht uitvoeren met feitelijk plan .
Houd er rekening mee dat als Inclusief daadwerkelijk uitvoeringsplan is geselecteerd in SSMS, de SET SHOWPLAN_XML ON
optie produceert geen XML Showplan-uitvoer. Probeer het Actief uitvoeringsplan opnemen . te wissen knop voordat u deze SET
. gebruikt optie.
Ik vind echter dat Azure Data Studio het tegenovergestelde doet SHOWPLAN_XML ON
lijkt de Huidige zoekopdracht uitvoeren met feitelijk plan te negeren optie, behalve als ik Uitleggen . uitvoer eerst (geschat queryplan), waarna Huidige zoekopdracht uitvoeren met feitelijk plan werkt plotseling (de Actual Rows en Daadwerkelijke uitvoeringen kolommen van de Topactiviteiten tab retourneert de juiste gegevens).
Het is waarschijnlijk het beste om de XML Showplan-optie uit te schakelen voordat u andere methoden gebruikt om het queryplan op te halen.