Sql 查询不';如果使用的过滤器范围较小,则不完整

Sql 查询不';如果使用的过滤器范围较小,则不完整,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,以下几点效果很好: SELECT * FROM Table1 T1 WHERE T1.StaffId IN (select Id From Staff WHERE DeptId=5) AND T1.LastUpdatedOn>'2013-07-01' 上述查询仅返回38条记录。如果我有T1.LastUpdatedOn>“2013-07-02”,则返回的行数应等于或小于38 奇怪的是,它适用于2013-07-07之前的日期。当我使用日期2013-07-08或更高版本时,查询从未运

以下几点效果很好:

 SELECT * FROM Table1 T1 WHERE T1.StaffId IN (select Id From Staff WHERE DeptId=5)
    AND T1.LastUpdatedOn>'2013-07-01'
上述查询仅返回38条记录。如果我有
T1.LastUpdatedOn>“2013-07-02”
,则返回的行数应等于或小于38

奇怪的是,它适用于2013-07-07之前的日期。当我使用日期
2013-07-08
或更高版本时,查询从未运行到完成

有什么不对劲吗


添加更多信息:

实际SQL配置文件输出,仅更改列名:

select * from fish F where F.StaffId in 
(select Id from view_Staff where Dept='xxx' and Site='yyy')
and F.LastUpdatedOn>'2013-07-01'
上面的CPU占用:749,读取:261243,写入:528,持续时间:747

如果我只是简单地将日期更改为“2013-07-08”,查询就不会完成。当我杀死它时,它已经消耗了CPU:88453,读取:7295813,写入:523和持续时间:88464


当要返回的数据实际上较少时,增加的读取数意味着什么?

当您使用该特定日期时,确实不应该有任何理由让它表现出奇怪的行为。您是否检查了数据的一致性?当查询从未完成时,您能否发布您运行的确切查询。@emagana:一致性是什么意思?共有38条记录的最新更新时间为“2013-07-01”。因此,原始查询已被管理以获取每一行。7月1日之后的任何日期都应该返回相同数据的子集,对吗?@OldGeezer您的代码是否执行?或者您需要的值是错误的?@Bew请查看我添加的新信息。谢谢。我以前在工作中遇到过一个实例,根本原因是索引太多,或者更确切地说是设计糟糕的索引。你的索引看起来怎么样?