我有一个简单的选择语句,从一个拥有大约1000-2000万行数据的SQL Server 2000(非常老旧)表中选择数据,如下所示 -
@startDate = '2014-01-25' -- yyyy-mm-dd
@endDate = '2014-02-20'
SELECT
Id, 6-7 other columns
FROM
Table1 as t1
LEFT OUTER JOIN
Table2 as t2 ON t1.Code = t2.Code
WHERE
t1.Id = 'G59' -- yes, its a varchar
AND (t1.Entry_Date >= @startDate AND t1.Entry_Date < @endDate)
这使我大约在10秒钟内得到了大约40K行。但是,如果我设置@startDate ='2014-01-30',始终保持@endDate不变,则查询大约需要2分30秒。
为了产生相同数量的行,我再次尝试了01-30,并花费了2分48秒。
我很惊讶看到差异。我没有期望差异会如此之大。相反,我希望较小的日期范围需要相同或更少的时间。
可能的原因是什么,我该如何解决?