从表中查询数据超过十亿行

时间:2013-10-15 15:16:24

标签: sql indexing rows

我在SQL Server中有一个简单的表,如下所示:

id | Date | Value

我在Date上有一个聚集索引,id上有非聚集索引。

该表包含超过十亿行。

我创建一个看起来像这样的简单查询:

select * from table 
where id = x 
and date >= date1 and date < date2

问题:当我使用例如date1 01 sept 2013和date2 14 oct 2013时,为什么只需要少于一次或最多3秒的时间来查找数据,但是如果我将date1更改为01 oct 2013它需要超过50秒,如果我采取01 jan 2013它只需要不到3秒钟?

我已经尝试了一切,我删除了缓存和数据库的SQL执行计划,仍然是一样的...... SQL Server忘了在这行上设置索引吗?我不知道该怎么做,似乎它是随机工作的。

1 个答案:

答案 0 :(得分:1)

我会在两者(id,date)上都有一个索引。只是一个 - 或者不会让你受益。你需要在一个索引中。未集群...您已经通过ID获得的索引,只需将其构建为(ID,日期)