【查询优化】MSSQL查询执行流程
清空缓存的方法:
dbcc dropcleanbuffers
dbcc freeproccache
第一:一个查询首次执行时,缓存中没有相应的数据,这个时候,首先会生成一个执行计划
生成一个执行计划的方法:
选中要查询的SQL语句,然后按下CTRL+L,有下图结果
(该图的语句为:select * from note500)
然后同步地,会根据计划从物理硬盘中提取相应的数据到缓冲区,这就是预读。制定执行计划和预读操作是并行进行的。
接着,如果缓冲区中没有完整的查询数据,就需要从物理硬盘中再读取出相应缺少的数据,这就是物理读
最后才是读取缓冲区中的数据,也就是逻辑读
第二:当第二次执行这个查询的时候就会直接读取缓冲区的数据,就没有预读和物理读了,因为缓冲区中已经有了相应的查询结果数据。
下面是查询的结果消息:
(5000000 行受影响)
表 'note500'。扫描计数 1,逻辑读取 33769 次,物理读取 0 次,预读 33768 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

浙公网安备 33010602011771号