我发现,通过查询存储,一个查询平均执行 297582 次逻辑读取。
我想看看我是否能够稍微调整一下该查询,然后尝试再次执行该查询以查看是否有任何改进。
问题是我在缓存计划中找不到编译参数值。
我错过了什么吗?也许是某些原因/设置阻止了参数值的缓存?
即使以 XML 格式打开执行计划,我也找不到参数。
附加信息:查询由第三方应用程序执行,该应用程序准备语句,然后使用sp_prepare
和执行它们sp_execute
。
我发现,通过查询存储,一个查询平均执行 297582 次逻辑读取。
我想看看我是否能够稍微调整一下该查询,然后尝试再次执行该查询以查看是否有任何改进。
问题是我在缓存计划中找不到编译参数值。
我错过了什么吗?也许是某些原因/设置阻止了参数值的缓存?
即使以 XML 格式打开执行计划,我也找不到参数。
附加信息:查询由第三方应用程序执行,该应用程序准备语句,然后使用sp_prepare
和执行它们sp_execute
。
sp_prepare
不包括参数的编译值,因为它不会“嗅探”它们。当使用它发出查询时,基数估计是使用密度向量而不是统计直方图进行的。我最近在这里写了一些关于这个的博客:
为什么 sp_prepare 在性能方面不如 sp_executesql “好”
如果您阅读了博文,就会对我在此答案中使用的一些术语进行更多解释。