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

Rod*_*ton 4 sql performance sql-server-2008 sql-like

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%'

为什么???

Mar*_*ith 9

我想你必须有一个非覆盖索引,其中包含comparepnfwd 由文字查询使用的前导列,而不是具有变量的查询.

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