如果使用declare参数,sql就像查询一样慢但如果没有则快

时间:2011-05-13 19:18:59

标签: sql sql-server-2008 sql-like performance

SQL 2008: 这很慢(需要1 1/2分钟):

declare @p1 varchar(50)
set @p1 = '976j%'
select * from invsearch_query where comparepnfwd like @p1

这需要不到一秒的时间:

select * from invsearch_query where comparepnfwd like '976j%'

为什么???

1 个答案:

答案 0 :(得分:9)

我认为你必须有一个非覆盖索引,其中前导列comparepnfwd由文字查询使用,而不是由带有变量的查询使用。

您可以使用OPTION (RECOMPILE)让SQL Server重新编译计划,同时考虑实际的变量值。