【发布时间】:2011-05-20 03:02:47
【问题描述】:
我已经阅读了 SQL Server 2008 OPTIMIZE FOR UNKNOWN 查询提示。我了解它的工作原理。
但是,我有一个关于 where 和 when 使用它的问题。它不能在 UDF 中指定。它可以在存储过程中指定。但是,this MSDN 博客文章声明如下:
4.将查询移动到存储过程中可以把它放到一个单独的 程序上下文,可以是一个很好的 使该值对 优化器(注意:这适用于 SQL 2000 年也是如此)
在我看来,任何传递给存储过程的参数都将被“嗅探”,从而帮助 SQL Server 编译最佳执行计划。这意味着将重新访问/重新编译缓存的计划(不确定该机制)。然而,这令人困惑,因为它否定了 OPTIMIZE FOR UNKNOWN 的全部需求。
关于查询提示的 MSDN 文章没有涵盖我的问题。
有人可以为我回答这个问题吗,最好是指向微软的一些东西来解决这个问题。谢谢。
【问题讨论】:
标签: sql-server stored-procedures query-hints optimizer-hints