有没有一种可靠的方法来确定优化器生成查询计划需要多长时间?

J.D*_*.D. 7 sql-server optimization statistics execution-plan sql-server-2016

我不确定我从哪里开始,但是有没有办法查看优化器为查询生成查询计划花费了多长时间?它是否存储在任何 DMV 或某个统计数据的一部分中?或者,如果我包含实时统计数据或实际执行计划,我可以以某种方式计算它吗?也许在查询存储中?

Kin*_*hah 7

有很多方法:

  • 如果您可以运行查询
    • 你可以使用set statistics time on它会给你:

      SQL Server 解析和编译时间:CPU 时间 = xx ms,运行时间 = xx ms。

  • 如果您无法运行查询,则挖掘计划缓存以检查查询编译时间以及许多其他重要见解。

还有许多其他方法,如分析器、服务器端跟踪或 XEvents - 但它们很昂贵,并且可能对您的 sql server 产生负面性能影响。

您可以使用sp_BlitzCache从计划缓存中找出查询编译超时。