【发布时间】:2011-10-05 09:23:39
【问题描述】:
我想了解在存储过程中实现“IF”条件的更好方法。
我已经看到这种方法被广泛使用。可以和迭代编码相媲美...
declare @boolExpression bit = 1 --True
if @boolExpression = 1
select column from MyTable where group = 10
else
select column from MyTable where group = 20
我更喜欢使用基于集合的方法...
declare @boolExpression bit = 1 --True
select column from MyTable where group = 10 and @boolExpression =1
union all
select column from MYTable where group = 20 and @boolExpression =0
我更喜欢使用这种方法,因为据我了解,它创建了一个可重用的查询计划并减少了计划缓存流失。这是事实还是虚构?哪个是正确的使用方法。
提前致谢
【问题讨论】:
-
第二个中是否缺少
UNION ALL? -
是的,谢谢 Martin,UNION ALL 不见了。我加进去
标签: sql-server tsql sql-server-2008 sql-execution-plan