为什么计算执行计划需要这么长时间?

时间:2018-12-09 05:59:33

标签: sql-server statistics sql-execution-plan sqlperformance rebuild

我有一个问题,当第一次运行查询(选择查询)后,某些表的重建或更新统计信息完成时,它运行太慢并且此查询的持续时间约为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。

1 个答案:

答案 0 :(得分:0)

  

为什么要计算执行计划花这么长时间?

您为什么认为它正在计算执行计划?

它是从磁盘read-ahead reads 946797读取的“第一次”。

预读可能高达512字节,因此30分钟内946,797个预读平均为500 IO / sec ,最高可达260MB / sec, IO系统可以提供的最大数量。因此,这些预读可能会占用整个30分钟的执行时间。

第二次数据几乎全部存储在内存中。