首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在SQL Server中,如何为SP中的单个查询提供多个执行计划,而不必每次都重新编译?

在SQL Server中,如何为SP中的单个查询提供多个执行计划,而不必每次都重新编译?
EN

Stack Overflow用户
提问于 2011-05-12 13:26:44
回答 2查看 1.4K关注 0票数 1

在SQL Server中,允许SP中的一个查询存在多个执行计划而不必每次都重新编译的最佳方式是什么?

例如,我有一个例子,根据查询使用的临时表中有多少行,查询计划会有很大的不同。由于没有令人满意的“一刀切”计划,而且每次都重新编译是不可接受的,因此我最终在几个IF语句中多次复制/粘贴(ick) SP中的主查询,迫使SQL引擎为每个case提供自己的最佳计划。它实际上在性能方面看起来工作得很好,但感觉有点笨拙。(我知道我同样可以将这一部分分成多个SP来做同样的事情。)有没有更好的方法来做这件事?

代码语言:javascript
运行
复制
IF @RowCount < 1
    [paste query here]
ELSE IF @RowCount < 50
    [paste query here]
ELSE IF @RowCount < 200
    [paste query here]
ELSE
    [paste query here]
EN

Stack Overflow用户

发布于 2012-01-30 21:50:44

SQL Server 2005+具有语句级重新编译功能,并且能够更好地处理这种分支。您仍然有一个计划,但是该计划可以在语句级别进行部分重新编译。

但它是丑陋的。

我个人倾向于使用@Mitch using的选择,因为您无论如何都需要使用临时表对存储过程进行重新编译。请参阅Temp table and stored proc compilation

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5973634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档