SQL语句执行效率及性能测试

写程序的人,往往需要分析所写的SQL语句是否已经优化过了,服务器的响应时间有多快,这个时候就需要用到SQL的STATISTICS状态值来查看了。 通过设置STATISTICS我们可以查看执行SQL时的系统情况。选项有PROFILE,IO ,TIME。介绍如下:

  • SET STATISTICS PROFILE ON:显示分析、编译和执行查询所需的时间(以毫秒为单位)。
  • SET STATISTICS IO ON:报告与语句内引用的每个表的扫描数、逻辑读取数(在高速缓存中访问的页数)和物理读取数(访问磁盘的次数)有关的信息。 
  • SET STATISTICS TIME ON:显示每个查询执行后的结果集,代表查询执行的配置文件。

 使用方法:打开SQL SERVER 查询分析器,输入以下语句:

SET STATISTICS PROFILE ON 
SET STATISTICS IO ON 
SET STATISTICS TIME ON 
GO /*--你的SQL脚本开始*/
SELECT [TestCase] FROM [TestCaseSelect] 
GO /*--你的SQL脚本结束*/
SET STATISTICS PROFILE OFF 
SET STATISTICS IO OFF 
SET STATISTICS TIME OFF

效果如图所示:

另外,也可以通过手工添加语句,计算执行时间来查看执行语句花费了的时间,以判断该条SQL语句的效率如何:

declare @d datetime
set @d=getdate()
/*你的SQL脚本开始*/
SELECT [TestCase] FROM [TestCaseSelect] 
/*你的SQL脚本结束*/
select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate()) 

时间: 2024-08-30 19:37:39

SQL语句执行效率及性能测试的相关文章

根据mysql慢日志监控SQL语句执行效率_Mysql

根据mysql慢日志监控SQL语句执行效率 启用MySQL的log-slow-queries(慢查询记录). 在Linux环境下先要找到my.cnf文件(一般在/etc/mysql/),然后可能会发现该文件修改后无法保存,原因是你没有相应的权限,可以从属性中看到该文件的所有者是root,这时要先以root的身份打开它: sudo nautilus /etc/mysql 接着再打开my.cnf文件然后找到[mysqld]标签在下面加上: log-slow-queries=/path/slow.lo

通过查询分析器对比SQL语句执行效率

可以方便地对不同的SQL语句进行效率对比.首先打开查询分析器,将查询菜单中的"显示执行计划"."显示服务器跟踪"."显示客户统计"都选中. 在编辑窗口中输入要进行对比的SQL语句,比如不同方式的查询: SELECT *FROM CRM_FWDWHERE RQ BETWEEN '2006-06-01' AND '2006-06-02'SELECT *FROM CRM_FWDWHERE DATEDIFF(DAY, RQ, '2006-06-01')

Oracle的SQL语句执行效率问题查找与解决方法

一.识别占用资源较多的语句的方法(4种方法) 1.测试组和最终用户反馈的与反应缓慢有关的问题. 2.利用V_$SQLAREA视图提供了执行的细节.(执行.读取磁盘和读取缓冲区的次数) •数据列 EXECUTIONS:执行次数 DISK_READS:读盘次数 COMMAND_TYPE:命令类型(3:select,2:insert;6:update;7delete;47:pl/sql程序单元) OPTIMIZER_MODE:优化方式 SQL_TEXT:Sql语句 SHARABLE_MEM:占用sha

mySQL中Explain实现Sql语句执行效率检查

Explain语法:explain select - from - [where ...] 例如:explain select * from news; 输出: +--+-----+---+---+-------+---+---+---+--+---+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +--+-----+---+---+-------+---+---+

sql语句执行与直接执行存储过程的效率比较

1.关于拼sql语句执行与直接执行存储过程的效率比较 1)在程序代码中拼sql语句,类似代码如下:                  代码如下 复制代码 System.Data.OleDb.OleDbCommand Command=conn.CreateCommand();                 Command.CommandTimeout=0;                 Command.Transaction=trans;                 Command.Com

创建索引对SQL语句执行的影响

一.创建索引对执行计划的影响 在SQL开始执行之前,Oracle会确定SQL语句的执行计划,并按照执行计划的步骤访问相应的表和索引. 一旦执行计划确定下来,Oracle会按照这个执行计划完成SQL语句的执行,在SQL语句执行开始之后建立的索引不会改变SQL语句的执行计划. 因此,创建索引不会对执行计划有任何的影响,也就不会对运行中的SQL语句有影响.下面通过一个例子简单验证一下: SQL> CREATE TABLE TEST (ID NUMBER, FID NUMBER, NAME VARCHA

SQL Server并行操作优化避免并行操作被抑制而影响SQL的执行效率_MsSql

为什么我也要说SQL Server的并行: 这几天园子里写关于SQL Server并行的文章很多,不管怎么样,都让人对并行操作有了更深刻的认识. 我想说的是:尽管并行操作可能(并不是一定)存在这样或者那样的问题,但是我们不能否认并行,仍然要利用好并行. 但是,实际开发中,某些SQL语句的写法会导致用不到并行,从而影响到SQL的执行效率 所以,本文要表达的是:我们要利用好并行,不要让一些SQL的写法问题"抑制"了并行,让我们享受不了并行带来的快感 关于SQL Server的并行: 所谓的

SQL语句执行过程详解

SQL语句执行过程详解一条sql,plsql的执行到底是怎样执行的呢?一.SQL语句执行原理:第一步:客户端把语句发给服务器端执行当我们在客户端执行 select 语句时,客户端会把这条 SQL 语句发送给服务器端,让服务器端的进程来处理这语句.也就是说,Oracle 客户端是不会做任何的操作,他的主要任务就是把客户端产生的一些 SQL 语句发送给服务器端.虽然在客户端也有一个数据库进程,但是,这个进程的作用跟服务器上的进程作用事不相同的.服务器上的数据库进程才会对SQL 语句进行相关的处理.不

mysql-python 脚本中sql语句执行失败的问题

问题描述 python 脚本中sql语句执行失败的问题 如题,一句sql语句,在mysql命令行下可以执行并且有结果,但是,放在一段python脚本里, db.cursor.excute(sql)怎么都是0,这是怎么回事,求破 (我用的pymysql包做数据库连接池,autocommit为Ture) 解决方案 SQL语句中的执行时间问题执行SQL语句脚本文件解决存储过程中SQL字符串语句执行引入参数的问题 解决方案二: 先打印一下python的sql语句,看是否有区别