Performance

如何在儲存過程中查看 ONE 語句的計劃?

  • January 22, 2020

我有一些 SQL,我在開發中每天執行幾次,通常執行時間為 3-8 分鐘。

現在我把它包裝在一個儲存過程中(沒有參數),性能是不可能的。第一個“重”語句只涉及 c.27k 行,永遠不會完成。

實際執行計劃不是一個選項,因為我什至無法完成此語句。所以我必須看看估計的執行計劃。

問題是我在每個語句的執行計劃窗格中都有一個單獨的“子窗格” 。我不能註釋掉前面的語句,因為它們是執行問題語句所必需的(儘管我已經註釋掉了所有後面的語句)。

如何在螢幕上*僅查看問題陳述的計劃?*這顯然是一個宏大的計劃。所有其他語句的計劃(我對此不感興趣)佔用了大量的螢幕空間,因此不可能滾動瀏覽重要的語句並找到阻塞點。但是現在似乎有一種方法可以“僅顯示此語句的計劃,並佔據整個螢幕”。

我錯過了什麼嗎?

我認為在 SSMS 中沒有辦法做到這一點。

為此,您應該使用Sentry One Plan Explorer。它是一個免費工具,提供了另一種查看 SQL Server 執行計劃的方法。

我已在 Stack Overflow 2010 範例數據庫的本地副本上執行此程式碼:

CREATE PROCEDURE #sp_TestQuery
AS
SELECT COUNT_BIG(*) FROM dbo.Users u WHERE u.Id > 10;
SELECT MAX(p.CommentCount) FROM dbo.Posts p WHERE p.Id > 1000;
SELECT MIN(v.BountyAmount) FROM dbo.Votes v WHERE v.Id > 100000;
GO

EXEC #sp_TestQuery;

執行該EXEC...行會產生您在 SSMS 中提到的問題:

SSMS 中預設結果的螢幕截圖

我在這裡的一個選擇是至少通過拖動它們之間的邊框來調整不同窗格的大小。如果我想主要查看中間查詢:

在 SSMS 中調整執行計劃窗格大小的螢幕截圖

但這仍然不理想。Plan Explorer 中的預設視圖在頂部顯示了一個語句列表,我可以點擊每個語句以查看其下方的圖形計劃。這是 Plan Explorer 中的中間查詢:

計劃資源管理器中的每個語句計劃視圖的螢幕截圖

引用自:https://dba.stackexchange.com/questions/257982