Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Máy chủ SQL SHOWPLAN_TEXT

Trong SQL Server, bạn có thể sử dụng SET SHOWPLAN_TEXT để trả về thông tin chi tiết về cách một câu lệnh T-SQL được thực thi.

SHOWPLAN_TEXT trả về thông tin dưới dạng một tập hợp các hàng tạo thành cây phân cấp đại diện cho các bước được thực hiện bởi bộ xử lý truy vấn SQL Server khi nó thực thi mỗi câu lệnh.

Nó tương tự như SHOWPLAN_ALL , ngoại trừ việc nó trả về ít chi tiết hơn. Do đó, nó nhắm đến các ứng dụng không thể xử lý các chi tiết bổ sung mà SHOWPLAN_ALL cung cấp.

Bạn có thể đặt SHOWPLAN_TEXT thành ON hoặc OFF .

Khi SHOWPLAN_TEXT ON , tất cả các câu lệnh T-SQL tiếp theo không được thực thi. Thay vào đó, SQL Server trả về thông tin thực thi cho câu lệnh (mà không thực thi nó).

Ví dụ

Đây là một ví dụ để chứng minh.

SET SHOWPLAN_TEXT ON;
GO

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

Lưu ý rằng SET SHOWPLAN_TEXT không thể được chỉ định bên trong một thủ tục được lưu trữ và nó phải là câu lệnh duy nhất trong một lô.

Đây là kết quả trong Azure Data Studio:

Và đây là giao diện trong mssql-cli (giao diện dòng lệnh):

Các lệnh
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.

Cách tắt tính năng này

Bạn có thể tắt nó bằng cách sử dụng SET SHOWPLAN_TEXT OFF .

Sau khi bạn thực hiện xong việc này, các câu lệnh tiếp theo sẽ thực thi như bình thường.

SET SHOWPLAN_TEXT OFF;
GO

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

Kết quả:

Các lệnh
Commands completed successfully.
+---------+-----------+---------+-----------+-----------+
| CatId   | CatName   | DogId   | DogName   | GoodDog   |
|---------+-----------+---------+-----------+-----------|
| 2       | Fluffy    | 2       | Fluffy    | 0         |
+---------+-----------+---------+-----------+-----------+
(1 row affected)
Commands completed successfully.

Không được dùng nữa hay Không?

Theo bài viết MSDN cũ này, SET SHOWPLAN_TEXT đã được lên lịch để không dùng nữa trong các phiên bản showplan trong tương lai và bạn nên sử dụng SET SHOWPLAN_XML thay vào đó.

Tuy nhiên, bài viết MSDN đó dành cho SQL Server 2008 R2 và khi tôi viết bài này, nó có vẻ như không được chấp nhận trong SQL Server 2019. Trên thực tế, tài liệu hiện tại không đề cập đến việc không dùng nữa và nó không được bao gồm khi tôi chạy danh sách các mục không dùng nữa trong SQL Server.

Dù bằng cách nào, nó có thể trả tiền để ghi nhớ điều này trước khi sử dụng nó trong các bản phát hành trong tương lai.

Kế hoạch thực thi đồ họa

Nếu đang sử dụng công cụ đồ họa như SSMS hoặc Azure Data Studio, bạn có thể có tùy chọn để xem kế hoạch thực thi truy vấn đồ họa ước tính cho truy vấn hiện tại.

  • Trong SSMS, bạn có thể sử dụng Ctrl + L để làm điều này. Hoặc bạn có thể nhấp vào Hiển thị kế hoạch thực hiện ước tính hoặc nhấp chuột phải vào cửa sổ truy vấn và chọn Hiển thị kế hoạch thực hiện ước tính .
  • Trong Azure Data Studio, bạn có thể nhấp vào nút Giải thích phía trên cửa sổ truy vấn.

Bạn cũng có thể sử dụng SET SHOWPLAN_XML ON để kích hoạt nó và SET SHOWPLAN_XML OFF để vô hiệu hóa nó.


  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 2017:Các tính năng có sẵn trên Linux

  2. Bảng tổng hợp và các cột nối

  3. T-SQL:Chọn cột dựa trên MAX (Cột khác)

  4. 9 mẹo hàng đầu để thiết lập cụm máy chủ SQL của bạn

  5. Làm cách nào để giám sát các thay đổi của bảng SQL Server bằng cách sử dụng c #?