一个不错的ms sql server执行计划

  从http://www.cnblogs.com/zping/archive/2008/07/15/1243367.html中看到,真的不错哦

就是在测量功能时,先以下命令清除sql server的缓存:

dbcc  freeProcCache

 

在点击某个按钮,执行完后,在执行下面语句,就可以知道系统运行什么sql和多少次,其主要慢的语句是那些了。   

 

 

SELECT   creation_time  N ' 语句编译时间 '
        ,last_execution_time  N
' 上次执行时间 '
        ,total_physical_reads N
' 物理读取总次数 '
        ,total_logical_reads
/ execution_count N ' 每次逻辑读次数 '
        ,total_logical_reads  N
' 逻辑读取总次数 '
        ,total_logical_writes N
' 逻辑写入总次数 '
        , execution_count  N
' 执行次数 '
        , total_worker_time
/ 1000  N ' 所用的CPU总时间ms '
        , total_elapsed_time
/ 1000   N ' 总花费时间ms '
        , (total_elapsed_time 
/  execution_count) / 1000   N ' 平均时间ms '
        ,
SUBSTRING (st. text , (qs.statement_start_offset / 2 +   1 ,
         ((
CASE  statement_end_offset 
          
WHEN   - 1   THEN   DATALENGTH (st. text )
          
ELSE  qs.statement_end_offset  END  
            
-  qs.statement_start_offset) / 2 +   1 ) N ' 执行语句 '
FROM  sys.dm_exec_query_stats  AS  qs
CROSS  APPLY sys.dm_exec_sql_text(qs.sql_handle) st
where   SUBSTRING (st. text , (qs.statement_start_offset / 2 +   1 ,
         ((
CASE  statement_end_offset 
          
WHEN   - 1   THEN   DATALENGTH (st. text )
          
ELSE  qs.statement_end_offset  END  
            
-  qs.statement_start_offset) / 2 +   1 not   like   ' %fetch% '
ORDER   BY   total_elapsed_time  /  execution_count  DESC ;

你可能感兴趣的:(一个不错的ms sql server执行计划)