代码之家  ›  专栏  ›  技术社区  ›  Philippe Grondier

查询超时,取决于日期

  •  0
  • Philippe Grondier  · 技术社区  · 16 年前

    我们有一些包含“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天的查询耗时更长,这仍然比其他时间段的查询慢得多。

    我觉得这个问题只是被避免了,而不是真正解决了,我仍然对这种行为感到不安。有人注意到过这种奇怪的事情吗,或者有人知道吗 发生了什么 ?

    1 回复  |  直到 16 年前
        1
  •  1
  •   D'Arcy Rittich    16 年前

    我推荐你 update your statistics rebuild the indexe s

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

    WHERE myDate BETWEEN dateMin and dateMax
    
    推荐文章