2013-10-15 45 views
1

我在SQL Server中一个简单的表格,看起来像这样:查询数据有超过十亿行

id | Date | Value 

我有idDate一个聚集索引,非聚集索引。

该表包含超过10亿行。

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

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

问:为什么只需要不到一个或最多3秒内找到的数据当我使用例如日期1 01 sept 2013和date2 14 oct 2013,但如果我将date1更改为01 oct 2013,则需要超过50秒,如果我将01 jan 2013仅需不到3秒?

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

回答

1

我会有一个索引都(id,日期)。只是一个 - 或者不会让你受益。你需要在一个单一的索引。不是群集...你的索引是你已经有了ID,只是建立它(ID,日期)

+0

谢谢,我将与我的团队讨论这个更新表需要一段时间 –