我有一个以日期时间作为参数的查询,我们观察到,如果您通过变量提供日期时间参数,则查询执行时间比直接硬编码参数要多 2 -3 倍,有什么原因或解决方案到它
以下查询大约需要 5 分钟才能返回结果
Declare @Date as DateTime
Set @Date = '01/01/2009'
Select * from TempTable where effdate = @Date
While as
Select * from TempTable where effdate = '01/01/2009'
它会在 10-20 秒内返回
我并不总是在我想要搜索的列上有索引。
根据 kevchadders 的建议,我看到执行计划存在巨大差异。使用日期变量的查询正在执行聚集索引扫描,另一个查询正在执行索引查找。
通常的怀疑是数据类型不匹配,这意味着该列是smalldatetime 或varchar。
“datetime”具有更高的优先级,因此该列将被转换。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)