SQL变量返回的时间比静态值长

klo*_*dge 11 sql sql-server variables datetime

我有一个包含两个值的表:

ciid, businessdate
Run Code Online (Sandbox Code Playgroud)

ciid是主键,并且已启用自动增量.businessdate(datetime)由另一个进程插入.

给出以下查询:

select top(1) ciid, businessdate
from checkitemsales 
where businessdate='10/9/16 00:00:00:000'
Run Code Online (Sandbox Code Playgroud)

返回仅需1.2秒,而此查询:

declare @var1 datetime

set @var1='10/9/16 00:00:00:000'

select top(1) ciid, businessdate
from checkitemsales
where businessdate = @var1
Run Code Online (Sandbox Code Playgroud)

返回需要5.6秒.

谁能告诉我我做错了什么?

KyL*_*Lim 1

declare @var1 datetime

set @var1='10/9/16 00:00:00:000'

select top(1) ciid, businessdate
from checkitemsales
where (businessdate = @var1) option (recompile)
Run Code Online (Sandbox Code Playgroud)

试试这个,让我知道结果,可能会更快