在计划缓存中找不到编译的参数值

Mat*_*ino 3 sql-server execution-plan parameter plan-cache sql-server-2016

我发现,通过查询存储,一个查询平均执行 297582 次逻辑读取。

我想看看我是否能够稍微调整该查询,然后尝试再次执行该查询以查看是否有任何改进。

问题是我在缓存计划中找不到编译参数值。

我错过了什么吗?也许是一些阻止参数值缓存的原因/设置?

即使我以 XML 格式打开执行计划,我也找不到参数。

附加信息:查询由第三方应用程序执行,该应用程序准备语句,然后使用sp_prepare和执行它们sp_execute

完整的 XML 计划

查询存储:在属性选项卡中找不到任何参数

计划缓存 DMV:计划缓存 dmv

Eri*_*ing 5

sp_prepare不包括参数的编译值,因为它不会“嗅探”它们。当使用它发出查询时,使用密度向量而不是统计直方图进行基数估计。

我最近在这里写了一篇关于这个的博客:

为什么 sp_prepare 在性能方面不如 sp_executesql“好”

如果您阅读了博客文章,则会对我在此答案中使用的一些术语进行更多解释。