我有一个以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的建议,我看到执行计划有很大的不同。使用日期变量的查询正在执行聚集索引扫描,而另一个正在执行索引搜索。
我之前已经看过这个,并且通过使用参数表而不是变量来解决它。
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)