我试图弄清楚为什么在时间范围内选择行需要太多时间。
我有一个超过 500 万行的数据库表。
FooTimestamp 列上有一个非唯一、非聚集索引,它是 DateTimeOffset 类型。
当我尝试检索某个时间范围内的某些行时,需要 2 分钟以上。(当我再次运行它时,由于 MS-SQL Server 2008 的缓存功能,我猜它相对较快)
DECLARE @since datetimeoffset
DECLARE @before datetimeoffset
SET @since ='2013-03-20 00:00:00 +02:00'
SET @before ='2013-03-27 00:00:00 +02:00'
SELECT *
WHERE ([FooTimestamp] >= @since AND [FooTimestamp] <= @before)
问题:当从具有数百万条记录的表中检索行时,我应该怎么做才能更快地获得查询结果?(我认为这样一个直截了当的查询需要 2 分钟太多了)