Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server SHOWPLAN_TEXT

W SQL Server możesz użyć SET SHOWPLAN_TEXT instrukcja, aby zwrócić szczegółowe informacje o sposobie wykonania instrukcji T-SQL.

SHOWPLAN_TEXT zwraca informacje jako zestaw wierszy, które tworzą hierarchiczne drzewo reprezentujące kroki podejmowane przez procesor zapytań SQL Server podczas wykonywania każdej instrukcji.

Jest podobny do SHOWPLAN_ALL , ale zwraca mniej szczegółów. Dlatego jest skierowany do aplikacji, które nie radzą sobie z dodatkowymi szczegółami, które SHOWPLAN_ALL zapewnia.

Możesz ustawić SHOWPLAN_TEXT na ON lub OFF .

Kiedy SHOWPLAN_TEXT jest ON , wszystkie kolejne instrukcje T-SQL nie są wykonywane. Zamiast tego SQL Server zwraca informacje o wykonaniu instrukcji (bez jej wykonywania).

Przykład

Oto przykład do zademonstrowania.

SET SHOWPLAN_TEXT ON;
GO

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

Pamiętaj, że SET SHOWPLAN_TEXT nie można określić wewnątrz procedury składowanej i musi to być jedyna instrukcja w partii.

Oto, jak wygląda wynik w Azure Data Studio:

A oto jak to wygląda w mssql-cli (interfejs wiersza poleceń):

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.

Jak to wyłączyć

Możesz go wyłączyć, używając SET SHOWPLAN_TEXT OFF .

Gdy to zrobisz, kolejne instrukcje będą wykonywane normalnie.

SET SHOWPLAN_TEXT OFF;
GO

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

Wynik:

Commands completed successfully.
+---------+-----------+---------+-----------+-----------+
| CatId   | CatName   | DogId   | DogName   | GoodDog   |
|---------+-----------+---------+-----------+-----------|
| 2       | Fluffy    | 2       | Fluffy    | 0         |
+---------+-----------+---------+-----------+-----------+
(1 row affected)
Commands completed successfully.

Przestarzałe czy nie?

Zgodnie z tym starym artykułem MSDN, SET SHOWPLAN_TEXT jest zaplanowane do wycofania w przyszłych wersjach showplanu i zaleca się użycie SET SHOWPLAN_XML zamiast tego.

Jednak ten artykuł MSDN dotyczy SQL Server 2008 R2 i kiedy to piszę, wydaje się, że nie został przestarzały w SQL Server 2019. W rzeczywistości aktualna dokumentacja nie wspomina o przestarzałości i nie jest uwzględniona kiedy uruchamiam listę przestarzałych pozycji w SQL Server.

Tak czy inaczej, prawdopodobnie warto mieć to na uwadze przed użyciem go w przyszłych wydaniach.

Graficzny plan wykonania

Jeśli używasz narzędzia graficznego, takiego jak SSMS lub Azure Data Studio, możesz mieć możliwość wyświetlenia szacowanego graficznego planu wykonania zapytania dla bieżącego zapytania.

  • W SSMS możesz użyć Ctrl + L aby to zrobić. Możesz też kliknąć Wyświetl szacunkowy plan wykonania lub kliknij prawym przyciskiem myszy w oknie zapytania i wybierz Wyświetl szacunkowy plan wykonania .
  • W Azure Data Studio możesz kliknąć Wyjaśnij przycisk nad oknem zapytania.

Możesz także użyć SET SHOWPLAN_XML ON aby go włączyć, i SET SHOWPLAN_XML OFF aby go wyłączyć.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zaimportować duży plik MS SQL .sql?

  2. Co to są indeksy obejmujące i objęte zapytania w programie SQL Server?

  3. SQL Server — najlepszy sposób na uzyskanie tożsamości wstawionego wiersza?

  4. Zobacz historię zadań agenta SQL Server za pomocą programu SSMS

  5. Jak napisać .Skip(1000).Take(100) LINQ w czystym SQL?