一尘不染

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

sql

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

为什么???


阅读 188

收藏
2021-05-23

共1个答案

一尘不染

我可以想象您必须有一个非覆盖索引,其前导列comparepnfwd 由文字查询使用,但不是由具有变量的查询使用。

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

2021-05-23