如何在从查询缓存或查询存储中提取的执行计划中包含“实际行”计数?

Joh*_*ner 5 sql-server execution-plan dmv

显然,在调整时看到实际的执行计划很重要,通常我通过启用查询计划输出SET STATISTICS XML ON并运行任何需要一些 TLC 的查询,但是我如何才能看到计划的历史运行或进程的实际记录计数我不能轻松手动运行(或在测试环境中模拟)?

当我通过显示sys.dm_exec_query_plansys.dm_exec_text_query_plan仅显示估计的行数从查询缓存中提取此信息时。使用查询存储 DMV 时存在相同的行为,sys.query_store_plan. 由于所有这些 DMV 都在提取已使用的实际计划,我希望在计划的图形表示中看到实际的行执行计数,但它们并不存在。

sys.dm_exec_query_statsDMV返回的信息只是在某种程度上有用,因为它返回语句的总计数,但计划中的详细操作员计数似乎隐藏在历史计划中。在 2014 年,我们sys.dm_exec_query_profiles使用了DMV,这有助于当前正在执行的计划,但这在查看历史执行时也无济于事。

这些信息是否存储在其他地方?我是否应该将估计行数视为实际计数(我对此表示怀疑,但因为我在问......)?是否有请求此功能的连接项目我可以投票?

Geo*_*e K 3

您不会看到计划缓存中的实际行计数,因为它存储了带有估计行计数和编译参数值的估计计划。

如果您确实认为需要实际行数来提出性能解决方案,则必须使用ProfilerEE专门使用Showplan XML Event Class实际执行查询或跟踪它。