设定:
我正在尝试SQL Server 2008 R2中的OPTIMIZE FOR
子句。我在查询结束时提出以下内容。
OPTION (OPTIMIZE FOR (@UserType= 'M', @Date UNKNOWN))
问题:
但是,我收到以下错误。
The variable "@UserType" is specified in the OPTIMIZE FOR clause, but is not used in the query.
此变量用于查询中的子查询,仅用于该位置。
如果我尝试将OPTIMIZE FOR
移动到子查询中,则存储的proc不会编译。同样,我不能将子查询放在CTE中并在其中进行优化;也不编译。
Incorrect syntax near the keyword 'OPTION'.
问题:
有什么办法可以在CTE或子查询中使用OPTIMIZE FOR
子句吗?我更喜欢使用CTE,因为它们通常更清洁,更清晰。
答案 0 :(得分:-1)
option
关键字必须始终放在最外层选择查询的末尾。
例如:
declare @var int = 1;
with cte
as (
select @var as val
)
select * from cte
option (optimize for (@var = 2))