Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server SHOWPLAN_TEXT

В SQL Server можете да използвате SET SHOWPLAN_TEXT оператор за връщане на подробна информация за това как се изпълнява T-SQL оператор.

SHOWPLAN_TEXT връща информация като набор от редове, които образуват йерархично дърво, представящо стъпките, предприети от процесора на заявки на SQL Server, докато изпълнява всеки израз.

Подобно е на SHOWPLAN_ALL , с изключение на това, че връща по-малко подробности. Следователно е насочен към приложения, които не могат да се справят с допълнителните подробности, които SHOWPLAN_ALL предоставя.

Можете да зададете SHOWPLAN_TEXT до ON или OFF .

Когато SHOWPLAN_TEXT е ON , всички следващи T-SQL оператори не се изпълняват. Вместо това SQL Server връща информация за изпълнение на израза (без да го изпълнява).

Пример

Ето пример за демонстрация.

SET SHOWPLAN_TEXT ON;
GO

SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO

Обърнете внимание, че SET SHOWPLAN_TEXT не може да бъде посочен вътре в съхранена процедура и трябва да е единственият израз в партида.

Ето как изглежда резултатът в Azure Data Studio:

И ето как изглежда в mssql-cli (интерфейс на командния ред):

Commands completed successfully.
+------------+
| StmtText   |
|------------|
| 
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;            |
+------------+
(1 row affected)
+--------------------------------------------------------------------------------------------------------------------------------------+
| StmtText                                                                                                                             |
|--------------------------------------------------------------------------------------------------------------------------------------|
|   |--Hash Match(Inner Join, HASH:([d].[DogName])=([Expr1003]), RESIDUAL:([Expr1003]=[Test].[dbo].[Dogs].[DogName] as [d].[DogName])) |
|        |--Table Scan(OBJECT:([Test].[dbo].[Dogs] AS [d]))                                                                            |
|        |--Compute Scalar(DEFINE:([Expr1003]=CONVERT_IMPLICIT(nvarchar(255),[Test].[dbo].[Cats].[CatName] as [c].[CatName],0)))       |
|             |--Clustered Index Scan(OBJECT:([Test].[dbo].[Cats].[PK__Cats__6A1C8AFAB3EF1A8F] AS [c]))                                |
+--------------------------------------------------------------------------------------------------------------------------------------+
(4 rows affected)
Commands completed successfully.

Как да го изключим

Можете да го изключите, като използвате SET SHOWPLAN_TEXT OFF .

След като направите това, следващите оператори ще се изпълняват нормално.

SET SHOWPLAN_TEXT 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.

Остаряло или не?

Съгласно тази стара статия в MSDN, SET SHOWPLAN_TEXT е насрочено за оттегляне в бъдещи версии на showplan и се препоръчва да използвате SET SHOWPLAN_XML вместо това.

Тази статия в MSDN обаче е за SQL Server 2008 R2 и докато пиша това, изглежда, че не е отхвърлена в SQL Server 2019. Всъщност текущата документация не споменава оттеглянето и не е включена когато стартирам списък с отхвърлени елементи в SQL Server.

Така или иначе, вероятно си струва да имате това предвид, преди да го използвате в бъдещи издания.

Графичен план за изпълнение

Ако използвате графичен инструмент като SSMS или Azure Data Studio, може да имате опцията да видите прогнозния план за изпълнение на графична заявка за текущата заявка.

  • В SSMS можете да използвате Ctrl + L да го направя. Или можете да кликнете върху Показване на прогнозния план за изпълнение икона или щракнете с десния бутон в прозореца на заявката и изберете Показване на приблизителен план за изпълнение .
  • В Azure Data Studio можете да щракнете върху Обяснение бутон над прозореца на заявката.

Можете също да използвате SET SHOWPLAN_XML ON за да го активирате и SET SHOWPLAN_XML OFF за да го деактивирате.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да инсталирате SQL Server на Ubuntu 18.04

  2. Изпълнете голям SQL скрипт (с GO команди)

  3. Йерархичен списък на типовете тригерни събития в SQL Server 2017

  4. Как да форматирате числа в SQL Server

  5. Стойности, разделени със запетая със SQL заявка