1、Set Statistics IO ON
2、打开profiler跟踪执行SQL: SELECT * FROM data_dict WHERE table_name='s_Order'结果:在消息面板里显示
表'data_dict'。扫描计数1,逻辑读取204 次,物理读取12 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。  在Profiler里面显示Reads为228
各位客官,能告诉我为什么这么简单的sql SET STATISTICS IO ON 出来的结果 和 profiler出来的结果不一样? 大家也可以试一试,简单情况下 reads=逻辑读。 稍微复杂点 reads等于什么? 这种情况经常出现

解决方案 »

  1.   

    Profiler本身也会有逻辑读取?。。!
      

  2.   


    Profiler本身也会消耗资源。 
      

  3.   

    profiler 里的跟踪是针对这条语句吗?
      

  4.   

    淡然是同一条SQL啦。一般在清除缓存的时候 profiler统计出来的结果 和 set statistics io on 出来的结果不一样。这个是咋回事?那个为准
      

  5.   

    其实Set Statistics IO ON这个逻辑读时从缓存读,因此缓存读为204
    物理读就是硬盘读,其实sql从硬盘读应该包括两个过程,即从硬盘读到缓存,再从缓存度,因此这是两个过程,所以就是12*2=24
    综上所述,204+24=228
    所以profiler没有区分逻辑读和物理读,应该是两者之和楼主验证下……