查看sqlserver 2008中性能低下的语句

经常使用这个语句来查看性能低下的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%‘
            and qs.execution_count>10000 and
            (total_elapsed_time / execution_count)/1000>150
ORDER BY  total_elapsed_time / execution_count DESC;

转自:http://blog.csdn.net/yangzhawen/article/details/7239392

时间: 2024-10-09 00:40:50

查看sqlserver 2008中性能低下的语句的相关文章

SQLServer 2008中SQL增强之三 Merge(在一条语句中使用

SQLServer 2008中SQL增强之三 Merge(在一条语句中使用Insert,Update,Delete) SQL Server 2008提供了一个增强的SQL命令Merge,用法参看MSDN:http://msdn.microsoft.com/zh-cn/library/bb510625.aspx 功能:根据与源表联接的结果,对目标表执行插入.更新或删除操作.例如,根据在另一个表中找到的差异在一个表中插入.更新或删除行,可以对两个表进行同步. 我们看一个例子,假如,有一总产品列表,一

sql server 2008 数据库管理系统使用SQL语句创建登录用户详细步骤

--服务器角色:--固定服务器角色具有一组固定的权限,并且适用于整个服务器范围. 它们专门用于管理 SQL Server,且不能更改分配给它们的权限. --可以在数据库中不存在用户帐户的情况下向固定服务器角色分配登录.--按照从最低级别的角色(bulkadmin)到最高级别的角色(sysadmin)的顺序进行描述:--1.Bulkadmin:这个服务器角色的成员可以运行BULKINSERT语句.这条语句允许从文本文件中将数据导入到SQLServer 2008数据库中,-- 为需要执行大容量插入到

在程序开发中怎样写SQL语句可以提高数据库的性能

以下内容是公司dba总结. 1. 首先要搞明白什么叫执行计划?   执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个10万条记录的表中查1条记录,那查询优化器会选择"索引查找"方式,如果该表进行了归档,当前只剩下5000条记录了,那查询优化器就会改变方案,采用"全表扫描"方式. 可见,执行计划并不是固定的,它是"个性化的".产生一个正确的"执行计划

sqlserver 存储过程中拼接sql语句 动态执行

ALTER PROC [dbo].[Student_Friend_Get] @startRowIndexId INT, @maxNumberRows INT, @schoolId INT, @gradeId INT, @cId INT, @keyWords NVARCHAR(100), @userName VARCHAR(50) AS BEGIN DECLARE @sqlfilter VARCHAR(max) SET @sqlfilter = ' ' IF(@schoolId <> -1) S

vs2010 win32程序中 sqlserver 2008 express的简单使用 (C++)

由于短学期作业需要在之前程序的服务器中加入数据库,就简单学习了下vs2010中自带的数据库sqlsever2008,学习的过程并不是很顺利,在网上没有找到特别完整的教程,现在课程结束了,特地来写一个,以方便后面的孩纸们,由于本人也是学的半懂不懂的,如果有什么不对的地方还请大家指正! 一.从零开始,建立一个数据库 (1)打开VS2010,工具->连接到数据库,然后在弹出的对话中框选择“Microsoft SQL Server”,单击“继续” (2)在下图所示对话框“服务器名”中输入“自己的计算机名

sql语句,怎么查看一个表中的所有约束

sql语句,怎么查看一个表中的所有约束,比如,一个student表,有唯一,外键,主键,用sql语句怎么查看student表中的所有约束呢? select * from sysobjects where parent_obj in(select id from sysobjects where name='student')

Sqlserver数据库中,跨权限执行语句

原文:Sqlserver数据库中,跨权限执行语句 问题来源:最近有同事需要执行批量删除语句.根据他提供的业务需求,推荐他使用"TRUNCATE TABLE"语句.但使用该语句需要 ALTER权限,这与执行用户的角色不符. 解决办法:使用EXECUTE AS语句修改执行权限.代码如下: ALTER PROCEDURE [dbo].[sp_TruncateTable] @TableName varchar(200) WITH EXECUTE AS SELF AS BEGIN --打印出当前

SQLServer 2008 R2查看字段约束

SQLServer 2008 R2 删除字段前检查字段的约束: select a.name,b.name as cname from syscolumns a left join sysobjects b on a.cdefault=b.id where a.id=object_id('TableName') and a.name='FieldName' 原文地址:https://www.cnblogs.com/talentzemin/p/10502653.html

SQLServer 2008 技术内幕——T-SQL 查询 笔记

原文:SQLServer 2008 技术内幕--T-SQL 查询 笔记 1.SQL编程有许多独特之处,如:面向集合的思维方式.查询元素的逻辑处理顺序.三值逻辑.如果不掌握这些知识就开始用SQL编程,得到的将是冗余的.性能低下的代码,而且难以维护. 2.在SQLServer中负责生成实际工作计划(执行计划)的组件是:查询优化器(query optimizer).只有在确保结果集正确的前提下,优化器才会走捷径.明确区分查询的逻辑处理和物理处理是非常重要的. 3.逻辑查询的各个阶段: (5) SELE