查询超时,具体取决于日期

时间:2009-10-03 08:23:08

标签: sql-server sql-server-2005 timeout

我们有一些用户表单,其中包含“期间”菜单,用户可以请求服务器返回特定日期范围的数据,例如“2008年10月1日至10日期间发出的采购订单”。

然后逻辑是“在运行中”将日期范围添加到原始sql查询并重新查询数据。添加到查询的过滤器的语法是:

WHERE myDate >=dateMin and myDate <= dateMax

或者,如果原始查询已经有过滤子句:

WHERE <original filter> AND (myDate >=dateMin and myDate <= dateMax)

同时使用'YYYYMMDD'格式的dateMin和dateMax。

我们昨天开始为我们的“错误”表单获取一些查询超时,它专门请求我们的“错误”表。经过一些测试后,似乎只有在从Error表和10月份请求数据时才会发生此超时问题。当在同一个表上使用另一个范围(9月,8月或其他)发送时,具有相同语法(仅更改dateMin和dateMax值)的相同查询没有超时!这种情况发生在从应用程序发送或直接从Sql Server Management Studio发送时。

我们通过在错误表的errorDate列上添加索引来避免超时问题(我们之前应该这样做,我知道,但我们忘记了!)。在10月份的日期请求时,我们的查询延迟仍然是标准延迟的4到5倍! 我们一直在尝试查询较小的intervalls,例如“前15天”,“过去15天”。 “前15天”查询花费的时间比最近15天的查询要长,这仍然比其他时段的查询慢得多。

我觉得这个问题只是避免了,并没有真正解决,我仍然对这种行为感到非常不安。有没有人注意到这些奇怪的事情,或者有没有人对正在发生的事情有任何想法?

1 个答案:

答案 0 :(得分:1)

我建议你update your statisticsrebuild the indexe s。

另请注意,您可以使用BETWEEN,例如:

WHERE myDate BETWEEN dateMin and dateMax