首页 > 解决方案 > 为什么计算一个执行计划需要这么长时间?

问题描述

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

标签: sql-serverstatisticssql-execution-plansqlperformancerebuild

解决方案


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

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

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

预读可能高达 512 字节,因此 946,797 次预读在 30 分钟内平均为 500 IO/秒高达 260MB/秒,任何一个都可能与您的 IO 系统可以提供的一样多。因此,这些预读可能会占整个 30 分钟的执行时间。

第二次数据几乎都在内存中。


推荐阅读