我有一个问题,当我第一次运行我的查询(选择查询)时,某些表的重建或更新统计完成后,它运行得太慢,此查询的持续时间约为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 回答
为什么你认为它正在计算执行计划?
它是从磁盘读取的"First Time":
read-ahead reads 946797
.预读读取可能大到512字节,因此30分钟内的946,797次预读读取平均为500 IO /秒,高达260MB /秒,任何一个都可能与IO系统可以提供的一样多 . 因此,这些预读读取可能会占到整个30分钟的执行时间 .
第二次数据几乎都在内存中 .