我在 SQL Server 中有一个简单的表,如下所示:
id | Date | Value
我有一个聚集索引Date
,非聚集索引id
。
该表包含超过 10 亿行。
我创建了一个看起来像这样的简单查询:
select * from table
where id = x
and date >= date1 and date < date2
01 sept 2013
问题:为什么当我使用例如 date1和 date2时查找数据只需要不到一秒或最多 3 秒14 oct 2013
,但是如果我将 date1 更改为01 oct 2013
它需要超过 50 秒,如果我01 jan 2013
再次使用它只需要不到 3 秒?
我什么都试过了,我把数据库的缓存和SQL执行计划都删了,还是一样……SQL Server忘了给这行设置索引了吗?我不知道该怎么办,它似乎在随机工作。