一个不错的ms sql server执行计划
2008-09-11 17:05
471 查看
从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;
就是在测量功能时,先以下命令清除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执行计划
- 如何看MS SQLSERVER数据库的执行计划
- 一次ORA-4030问题诊断及解决【解决思路不错,说明了对象的统计信息与优化器的优化操作(即选择执行一个SQL语句在该优化参数环境下最佳的执行计划)间的关系】
- 如何看MS SQLSERVER数据库的执行计划
- 开始使用VS2005+ASP.NET+Access(以后可能是MS SQL Server)编写管理系统的计划
- ms sql server 查询一个表的字段属性和主键
- Sql server Insert执行的秘密(上)一个最简单的INSERT分析
- 一列多行值合并成一个值(MS SQL SERVER 2008)
- SQLServer执行计划成本(续1)
- 一列多行值合并成一个值(MS SQL SERVER 2008)
- ms sql server 2005 维护计划无法删除问题(sql server 2005 maintnance plan can not delete)
- AutoTRACE是分析SQL的执行计划,执行效率的一个非常简单方便的工具
- 在MS SQL Server 中创建计划备份
- SQL Server执行计划的理解【转】
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC FREESESSIONCACHE刷新针对 Microsoft SQL Server 实例执行的分布式查询所使用的分
- 推荐一个.net下学习水晶报表的好程序兼ms sql server的好助手
- 一个小项目从MS SQL Server移植到Oracle的SQL 语句的变化
- MS SQl Server 为用户批量授与存储过程执行权限
- 图文教程mssqlserver数据库导出到另外一个数据库的方法
- SqlServer 中如何查看某一个Sql语句是复用了执行计划,还是重新生成了执行计划