Trong SQL Server, bạn có thể sử dụng SET SHOWPLAN_XML
để trả về thông tin chi tiết về cách một câu lệnh T-SQL sẽ được thực thi, dưới dạng một tài liệu XML được xác định rõ.
Nó tương tự như SHOWPLAN_ALL
, ngoại trừ SHOWPLAN_ALL
trả về tập dữ liệu của nó gồm các hàng tạo thành cây phân cấp.
Bạn có thể đặt SHOWPLAN_XML
thành ON
hoặc OFF
.
Khi SHOWPLAN_XML
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_XML ON;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO
Lưu ý rằng SET SHOWPLAN_XML
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ô.
Kết quả bạn nhận được có thể phụ thuộc vào công cụ bạn đang sử dụng để truy cập SQL Server.
Khi tôi chạy điều này trong Azure Data Studio, tôi có thể nhấp vào các tab khác nhau để xem kết quả khác.
Kết quả tab hiển thị chuỗi XML thô:
Nhấp vào hàng sẽ mở tài liệu XML trong một tab mới:
Kế hoạch truy vấn tab hiển thị biểu diễn đồ họa của kết quả:
Hoạt động hàng đầu tab trình bày dữ liệu ở định dạng bảng cho phép bạn sắp xếp dữ liệu theo các số liệu khác nhau:
Không hoạt động?
Nếu nó không hiệu quả với bạn, hãy đảm bảo Bao gồm kế hoạch thực thi thực tế không được chọn trong SSMS. Khi điều này được chọn, SET SHOWPLAN_XML ON
không tạo ra đầu ra XML Showplan.
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_XML 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_XML OFF;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO
Kết quả:
Các lệnhCommands completed successfully. +---------+-----------+---------+-----------+-----------+ | CatId | CatName | DogId | DogName | GoodDog | |---------+-----------+---------+-----------+-----------| | 2 | Fluffy | 2 | Fluffy | 0 | +---------+-----------+---------+-----------+-----------+ (1 row affected) Commands completed successfully.
Kế hoạch thực thi trong GUIs
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 lối tắt để xem kế hoạch thực thi truy vấn đồ họa ước tính. Điều này cho phép bạn xem kế hoạch truy vấn mà không cần chạy SET SHOWPLAN_XML ON
.
Để chạy một kế hoạch truy vấn ước tính:
- 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 . Điều này sẽ giúp bạn không phải chuyển
SHOWPLAN_XML
bật và tắt trong mã của bạn. - 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ể chạy một kế hoạch truy vấn thực tế:
- Trong SSMS, trên Truy vấn , nhấp vào Bao gồm kế hoạch thực thi thực tế hoặc nhấp vào Bao gồm kế hoạch thực thi thực tế nút thanh công cụ.
- Trong Azure Data Studio, đi tới Xem> Bảng Lệnh và nhập Chạy truy vấn hiện tại với kế hoạch thực tế .
Lưu ý rằng nếu Bao gồm kế hoạch thực thi thực tế được chọn trong SSMS, SET SHOWPLAN_XML ON
tùy chọn không tạo ra đầu ra XML Showplan. Thử xóa Bao gồm kế hoạch thực thi thực tế trước khi sử dụng SET
này tùy chọn.
Tuy nhiên, tôi thấy Azure Data Studio làm ngược lại SHOWPLAN_XML ON
dường như ghi đè Chạy truy vấn hiện tại với kế hoạch thực tế tùy chọn, ngoại trừ nếu tôi chạy Giải thích đầu tiên (kế hoạch truy vấn ước tính), sau đó Chạy truy vấn hiện tại với kế hoạch thực tế đột ngột hoạt động ( Hàng thực tế và Các lần thực thi thực tế các cột của Hoạt động hàng đầu tab trả về dữ liệu thích hợp).
Có lẽ tốt nhất là tắt tùy chọn XML Showplan trước khi sử dụng các phương pháp khác để truy xuất kế hoạch truy vấn.