【发布时间】:2018-12-09 05:59:32
【问题描述】:
我有一个问题,当我第一次运行查询(选择查询)时,某些表的重建或更新统计信息完成后,它运行得太慢,此查询的持续时间约为 30 分钟,但在那之后当我再次运行它时,持续时间约为 3 秒,如何解决?
我在查询中设置了统计 IO 并得到了这个结果:
--第二次
表'table1'。扫描计数 42,逻辑读取 963118,物理读取 0, 预读读取 274,lob 逻辑读取 0,lob 物理读取 0,lob 预读为 0。
--第一次
表'table1'。扫描计数 42,逻辑读取 977019,物理读取 1143,预读读取 946797,lob 逻辑读取 0,lob 物理读取 0,lob预读为0。
【问题讨论】:
-
30 分钟对于这个计划来说有点极端,所以很有可能它实际上是在选择一个次优的计划,但直到第二次才知道。可能有一个尚未更新的表?查询中的索引提示可能会有所帮助,或者添加一个稍微不同的索引。但是,我们需要更多信息才能分辨。另外,这种情况会发生多长时间?
标签: sql-server statistics sql-execution-plan sqlperformance rebuild