В SQL Server можете да използвате SET SHOWPLAN_XML
оператор за връщане на подробна информация за това как ще бъде изпълнен T-SQL оператор под формата на добре дефиниран XML документ.
Подобно е на SHOWPLAN_ALL
, с изключение на това SHOWPLAN_ALL
връща своя набор от данни от редове, които образуват йерархично дърво.
Можете да зададете SHOWPLAN_XML
до ON
или OFF
.
Когато SHOWPLAN_XML
е ON
, всички следващи T-SQL оператори не се изпълняват. Вместо това SQL Server връща информация за изпълнение на израза (без да го изпълнява).
Пример
Ето пример за демонстрация.
SET SHOWPLAN_XML ON;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO
Обърнете внимание, че SET SHOWPLAN_XML
не може да бъде посочен в съхранена процедура и трябва да бъде единственият израз в пакет.
Резултатът, който получавате, може да зависи от това кой инструмент използвате за достъп до SQL Server.
Когато стартирам това в Azure Data Studio, мога да щракна върху различните раздели, за да получа различен изглед на резултата.
Резултатите Разделът показва необработения XML низ:
Щракването върху реда отваря XML документа в нов раздел:
Планът за заявки Tab показва графично представяне на резултата:
Най-важните операции Разделът представя данните в табличен формат, който ви позволява да сортирате данните по различни показатели:
Не работи?
Ако не работи за вас, уверете се, че Включете действителен план за изпълнение не е избрано в SSMS. Когато това е избрано, SET SHOWPLAN_XML ON
не произвежда XML Showplan изход.
Как да го изключим
Можете да го изключите, като използвате SET SHOWPLAN_XML OFF
.
След като направите това, следващите оператори ще се изпълняват нормално.
SET SHOWPLAN_XML OFF;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO
Резултат:
Commands completed successfully. +---------+-----------+---------+-----------+-----------+ | CatId | CatName | DogId | DogName | GoodDog | |---------+-----------+---------+-----------+-----------| | 2 | Fluffy | 2 | Fluffy | 0 | +---------+-----------+---------+-----------+-----------+ (1 row affected) Commands completed successfully.
План за изпълнение в GUI
Ако използвате графичен инструмент като SSMS или Azure Data Studio, може да имате опция за пряк път за преглед на прогнозния план за изпълнение на графична заявка. Това ви позволява да видите плана на заявката, без да е необходимо да изпълнявате SET SHOWPLAN_XML ON
.
За да изпълните прогнозен план за заявка:
- В SSMS можете да използвате Ctrl + L да го направя. Или можете да кликнете върху Показване на прогнозния план за изпълнение икона или щракнете с десния бутон в прозореца на заявката и изберете Показване на приблизителен план за изпълнение . Това ще ви спести от необходимостта да обръщате
SHOWPLAN_XML
включване и изключване във вашия код. - В Azure Data Studio можете да щракнете върху Обяснение бутон над прозореца на заявката.
Можете също да стартирате действителен план за заявка:
- В SSMS, в Заявката щракнете върху Включи действителен план за изпълнение или щракнете върху Включи действителен план за изпълнение бутон на лентата с инструменти.
- В Azure Data Studio отидете на Изглед> Командна палитра и въведете Изпълнение на текущата заявка с действителен план .
Имайте предвид, че ако Включете действителен план за изпълнение е избран в SSMS, SET SHOWPLAN_XML ON
опцията не произвежда XML Showplan изход. Опитайте да изчистите Включи действителен план за изпълнение преди да използвате този SET
опция.
Въпреки това откривам, че Azure Data Studio прави обратното SHOWPLAN_XML ON
изглежда отменя Изпълнение на текуща заявка с действителен план опция, освен ако стартирам Explain първо (приблизителен план за заявка), след което Изпълнете текущата заявка с действителен план изведнъж работи (Действителните редове и Действително изпълнение колони на Водещи операции раздел връща съответните данни).
Вероятно е най-добре да изключите опцията XML Showplan, преди да използвате други методи за извличане на плана на заявката.