在回答这个问题时,KM说
如果您使用的是SQL Server 2005或更高版本,则可以使用IF在同一过程中进行多个查询,并且每个查询都将为其保存一个查询计划(相当于旧版本中的每个过程),请参见我的答复中的文章。或指向正确部分的链接:sommarskog.se/dyn- search-2005.html#IF
HLGEM添加了
您也可以在SQL Server的早期版本中执行此操作。
我读了Sommarskog出色文章的那一部分,但没有看到有关多个计划的任何内容。
在以后的研究中,我在这里阅读了格特·德雷珀斯的一句话:
因为SQL Server每个存储过程只允许一个执行计划,所以…
我不知道该原始文章的日期或他所指的SQL Server版本。
有没有人能提供可靠的参考资料来讨论这个问题,或者更好的是,有一个测试证明这一点是正确的?
我们都是正确的:-)
一个“查询计划”在缓存中最多具有2个条目:一个串行和一个并行
每个用户都有运行计划的自己的“执行上下文”
如果对象不合格,则计划会有所不同
因此,您可能认为的是计划不是因为表不符合架构要求(在SQL Server 2000、2005和2008中是相同的)
来自MSDN / BOL“执行计划缓存和重用”