我有SQL Server上的表,大约100万行。 它的ID(PK),一个状态(int)和日期时间列。 此外,我已经创建的日期时间列的索引。
现在我已经找到了一个效果,我不明白。
SELECT status
FROM table
WHERE dateTime BETWEEN '2010-01-01T00:00:00' AND '2010-01-02T12:00:00'
这个语句返回3664行。 它运行约150毫秒和执行计划显示,其做索引与键查找求。
现在,如果我改变如下(只是更改小时12〜13):
SELECT status
FROM table
WHERE dateTime BETWEEN '2010-01-01T00:00:00' AND '2010-01-02T13:00:00'
这个语句返回3667行。 它运行约600毫秒和exuction计划显示,使用主键的!
我只是不明白。 对于它总是使用主键,即使寻求3667个多行的速度要快得多。
是否有一个解释?