关于网友提出的“同样的代码为何输入参数和常量执行速度不一样”问题疑问,本网通过在网上对“同样的代码为何输入参数和常量执行速度不一样”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:同样的代码为何输入参数和常量执行速度不一样
描述:
执行速度sql serverdatetime
declare @qsrq datetime,@zzrq datetime
set @qsrq='2016-02-01'
set @zzrq='2016-03-01'
SELECT F_id, SUM(ABS(F_CheckMoneyAct)) AS repayment
FROM a_devolve a
WHERE EXISTS
(SELECT 1
FROM dbo.a_ArrearsDetail b
WHERE zt IN (2, 1) AND RepayDate BETWEEN @qsrq AND
@zzrq AND ArrearsDate < @qsrq AND
F_sampleid = a.F_sampleid)
GROUP BY F_id
执行效率0秒,执行计划是

但
SELECT F_id, SUM(ABS(F_CheckMoneyAct)) AS repayment
FROM a_devolve a
WHERE EXISTS
(SELECT 1
FROM dbo.a_ArrearsDetail b
WHERE zt IN (2, 1) AND RepayDate BETWEEN @qsrq AND
@zzrq AND ArrearsDate < @qsrq AND
F_sampleid = a.F_sampleid)
GROUP BY F_id
执行效率是26秒,执行计划是

请各位大侠们帮我解答下,是否和repaydate是datetime类型的有关,26秒太慢了!
解决方案1:
可以去百度一下 参数嗅探
以上介绍了“同样的代码为何输入参数和常量执行速度不一样”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/963132.html