Sql-Server

如何在從查詢記憶體或查詢儲存中提取的執行計劃中包含“實際行”計數?

  • May 19, 2017

顯然,在調整時看到實際的執行計劃是一件大事,通常我通過啟用查詢計劃輸出SET STATISTICS XML ON並執行任何需要一些 TLC 的查詢,但是我如何才能看到計劃的歷史執行或我不能的程序的實際記錄計數輕鬆手動執行(或在測試環境中模擬)?

sys.dm_exec_query_plan當我通過任一或sys.dm_exec_text_query_plan僅顯示估計的行數從查詢記憶體中提取此資訊時。使用查詢儲存 DMV 時存在相同的行為,sys.query_store_plan. 由於所有這些 DMV 都在提取使用的實際計劃,我希望看到計劃的圖形表示中包含實際的行執行計數,但它們不存在。

sys.dm_exec_query_statsDMV 返回的資訊只是有點有用,因為它返回語句的總計數,但計劃中的詳細操作員計數似乎隱藏在歷史計劃中。在 2014 年,我們可以使用sys.dm_exec_query_profilesDMV,這有助於目前執行的計劃,但這在查看歷史執行時也無濟於事。

這些資訊是否儲存在其他地方?我是否應該將估計的行數視為實際計數(我對此表示懷疑,但既然我在問……)?是否有需要此功能的連接項目我可以投票?

您不會從計劃記憶體中看到實際的行數,因為它儲存了估計的計劃以及估計的行數和編譯的參數值。

如果您確實認為需要實際的行數來提出性能解決方案,則必須使用ProfilerEE專門使用Showplan XML Event Class實際執行查詢或跟踪它。

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