一尘不染

SQL查询和datetime参数需要很长时间才能执行

sql

我有一个以datetime为参数的查询,我们观察到的是,如果通过变量提供datetime参数,则执行查询的时间比直接对参数进行硬编码要多2
-3倍,是否有任何原因或解决方案?对此

以下查询大约需要5分钟才能返回结果

Declare @Date as DateTime   
Set @Date = '01/01/2009'

Select * from TempTable where effdate = @Date

虽然作为

  Select * from TempTable where effdate = '01/01/2009'

它会在10到20秒内返回

我并不总是希望在列上使用索引进行搜索。

按照kevchadders的建议,我看到执行计划有很大的不同。使用日期变量的查询正在执行聚集索引扫描,而另一个正在执行索引搜索。


阅读 126

收藏
2021-05-23

共1个答案

一尘不染

我之前已经看过这个,并且通过使用参数表而不是变量来解决它。

if object_id('myParameters') is not null drop table myParameters
Select cast('1996-05-01' as datetime) as myDate into myParameters

Select * from TempTable where effdate = (select max(myDate) from myParameters)
2021-05-23