为什么选择日期慢

时间:2015-05-11 16:20:25

标签: sql-server date

我有一个大约有150万行的表,date_run是非簇的索引。查询#1需要0秒才能完成,查询#2需要3秒。有人可以解释为什么查询#2运行较慢。我还包括两者的执行计划。 Sql server版本2014。

查询#1

select  avg14gain
from stocktrack
where 
date_run >=  '2013-3-21'
and date_run <  '2013-3-22'

Valid XHTML http://biginkz.com/Pics/DateHardCoded.jpg

查询#2

declare @today date
declare @yesterday date
set @today='2013-3-22'
set @yesterday='2013-3-21'
select avg14gain
from stocktrack
where 
date_run  >=   @yesterday
and b.date_run <@today

Valid XHTML http://biginkz.com/Pics/DataAsigned.jpg

2 个答案:

答案 0 :(得分:0)

我不确定您的查询为何没有获取索引,但您可以使用index hint

尝试这样的事情:

declare @today date
declare @yesterday date
set @today='2013-3-22'
set @yesterday='2013-3-21'
select avg14gain
from stocktrack
where 
date_run  >=   @yesterday
and b.date_run <@today
with (index([stocktrack].[ix_drun])) 

您也可以尝试这篇文章中的建议:TSQL not using indexes。 请参阅@Justin Dearing的答案(重建索引/更新统计数据)。

答案 1 :(得分:0)

在date_run上创建索引,并将avg14gain作为该索引上的INCLUDE列。这样,整个查询就可以从一个索引中得到满足,优化器就会看到它。