我们有一些包含“period”菜单的用户表单,用户可以在其中请求服务器返回特定日期范围的数据,例如“2008年10月1日至10日之间发布的采购订单”。
然后,逻辑是将“即时”日期范围添加到原始sql查询中,并重新查询数据。添加到查询中的筛选器的语法为:
WHERE myDate >=dateMin and myDate <= dateMax
或者,如果原始查询已包含筛选子句:
WHERE <original filter> AND (myDate >=dateMin and myDate <= dateMax)
dateMin和dateMax均为'YYYYMMDD'格式。
我们昨天开始为“errors”表单获取一些查询超时,该表单专门请求“errors”表。经过一些测试,似乎只有在从错误表和10月份请求数据时,才会出现此超时问题。同一个查询在同一个表上与另一个范围(9月、8月或其他任何时间)一起发送时,语法非常相同(只更改了dateMin和dateMax值),但没有超时!从应用程序或直接从Sql Server Management Studio发送时会发生这种情况。
我们通过在Errors表的errorDate列上添加一个索引来避免超时问题(我知道我们之前应该这样做,但我们忘记了!)。我们仍然有一个查询延迟,这是标准的4到5倍长,在10月的日期请求!
我们一直在尝试查询较小的间隔,如“前15天”、“最后15天”。“前15天”的查询比最后15天的查询耗时更长,这仍然比其他时间段的查询慢得多。
我觉得这个问题只是被避免了,而不是真正解决了,我仍然对这种行为感到不安。有人注意到过这种奇怪的事情吗,或者有人知道吗
发生了什么
?