【查询优化】MSSQL查询执行流程

清空缓存的方法:

dbcc dropcleanbuffers

dbcc freeproccache

 

第一:一个查询首次执行时,缓存中没有相应的数据,这个时候,首先会生成一个执行计划

生成一个执行计划的方法:

选中要查询的SQL语句,然后按下CTRL+L,有下图结果

(该图的语句为:select * from note500) 

【查询优化】MSSQL查询执行流程

然后同步地,会根据计划从物理硬盘中提取相应的数据到缓冲区,这就是预读。制定执行计划和预读操作是并行进行的。

接着,如果缓冲区中没有完整的查询数据,就需要从物理硬盘中再读取出相应缺少的数据,这就是物理读

最后才是读取缓冲区中的数据,也就是逻辑读

第二:当第二次执行这个查询的时候就会直接读取缓冲区的数据,就没有预读和物理读了,因为缓冲区中已经有了相应的查询结果数据。

 

下面是查询的结果消息:

 

(5000000 行受影响)
表 'note500'。扫描计数 1,逻辑读取 33769 次,物理读取 0 次,预读 33768 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

posted @ 2014-07-30 18:06  jiang_jiang  阅读(135)  评论(0)    收藏  举报