显然,在调整时看到实际的执行计划是一件大事,通常我启用查询计划输出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_stats
DMV 返回的信息只是有点用处,因为它返回声明的总计数,但计划中的详细操作员计数似乎隐藏在历史计划中。在 2014 年,我们可以使用sys.dm_exec_query_profiles
DMV,这有助于当前正在执行的计划,但这在查看历史执行时也无济于事。
这些信息是否存储在其他地方?我是否应该将估计行计数视为实际计数(我对此表示怀疑,但既然我在问......)?是否有连接项目请求此功能我可以投票?
您不会从计划缓存中看到实际行数,因为它存储了带有估计行数和编译参数值的估计计划。
如果您真的认为您需要实际的行数来提出性能解决方案,那么您必须实际执行查询或使用
Profiler
或EE
专门使用Showplan XML 事件类来跟踪它。