让我们假设我在SQL Server 2016上运行以下查询:
declare @Ids as table
(
Id int
)
-- Insert some values into @Ids table
select
*
from dbo.Foos
where FooId in (select Id from @Ids)
现在让我们想我要 OPTIMIZE FOR
@ids表的特定"值"。甚至有可能提供这样的提示吗?我尝试过option (optimize for (@Ids = (values(1), (2))))
,但没有编译
预先感谢
不,您不能以这种方式使用该选项。让我们看一下文档:
优化( @variable_name {unknown | = literal_constant } [, ... n](指示查询优化器使用 a 的特定值 本地变量汇编和优化查询时。值是 仅在查询优化时使用,而在查询执行过程中不使用。
@variable_name 是查询中使用的本地变量的名称 提示。
因此,该选项适用于局部变量,但不是对表变量,这是绝对不同的。
提示(transact -sql( - 查询