SQL执行效率和性能测试方法
对于做管理系统和分析系统的程序员,复杂SQL语句是不可避免的,面对海量数据,有时候经过优化的某一条语句,可以提高执行效率和整体运行性能。如何选择SQL语句,本文提供了两种方法,分别对多条SQL进行量化的分析。
在测试SQL性能的过程中。
一是通过设置STATISTICS查看执行SQL时的系统情况。选项有PROFILE,IO ,TIME。
SET STATISTICS PROFILE ON:显示分析、编译和执行查询所需的时间(以毫秒为单位)。
SET STATISTICS IO ON:报告与语句内引用的每个表的扫描数、逻辑读取数(在高速缓存中访问的页数)和物理读取数(访问磁盘的次数)有关的信息。
SET STATISTICS TIME ON:显示每个查询执行后的结果集,代表查询执行的配置文件。
实例如下:
SET STATISTICS PROFILE ON
SET STATISTICS IO ON
SET STATISTICS TIME ON
GO
--你的SQL脚本开始
select top 100 * from TBL_Cot_RecStaticList
--你的SQL脚本结束
GO
SET STATISTICS PROFILE OFF
SET STATISTICS IO OFF
SET STATISTICS TIME OFF
显示信息:
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 59 毫秒。
(100 行受影响)
表 'TBL_Cot_RecStaticList'。扫描计数 1,逻辑读取 14 次,物理读取 2 次,预读 992 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
SQL Server 执行时间: CPU 时间 = 0 毫秒,占用时间 = 306 毫秒。
SQL Server 分析和编译时间: CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
SQL Server 执行时间: CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
SQL Server 执行时间: CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
另外,也可以通过手工添加语句,计算执行时间来查看执行语句花费了的时间,以判断该条SQL语句的效率如何:
declare @d datetime
set @d=getdate()
--你的SQL脚本开始
SELECT [TestCase] FROM [TestCaseSelect]
--你的SQL脚本结束
select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())
二是通过SQL 2008的“查询”按钮下的“包括实际的执行计划”和“包括客户端统计信息”。


下面是我和经理写的两个例子的性能对比:
我的:
SQL Server 执行时间:
CPU 时间= 32 毫秒,占用时间= 762 毫秒。
CPU 时间= 16 毫秒,占用时间= 475 毫秒。
CPU 时间= 32 毫秒,占用时间= 671 毫秒。
CPU 时间= 31 毫秒,占用时间= 615 毫秒。
经理的:
SQL Server 执行时间:
CPU 时间= 16 毫秒,占用时间= 547 毫秒。
CPU 时间= 47 毫秒,占用时间= 491 毫秒。
CPU 时间= 32 毫秒,占用时间= 436 毫秒。
CPU 时间= 47 毫秒,占用时间= 416 毫秒。
PS:今天在做一道题目的时候,经理给出的一道难题,虽然做出来了,但是性能没有做到最优化。其中用到了三层嵌套。现在特别是要总结的:大表跟小表进行关联查询 时,涉及到嵌套查询,先查询小表,然后再联合大表。我是一开始让大小表进行关联,然后再嵌套。而经理写的是先让小表嵌套,最后在关联。这样,执行效率自然要比我高
SQL执行效率和性能测试方法的更多相关文章
- SQL执行效率和性能测试方法总结
对于做管理系统和分析系统的程序员,复杂SQL语句是不可避免的,面对海量数据,有时候经过优化的某一条语句,可以提高执行效率和整体运行性能.如何选择SQL语句,本文提供了两种方法,分别对多条SQL进行量化 ...
- [转]SQLServer SQL执行效率和性能测试方法总结
本文转自:http://www.zhixing123.cn/net/27495.html 对于做管理系统和分析系统的程序员,复杂SQL语句是不可避免的,面对海量数据,有时候经过优化的某一条语句,可以提 ...
- SQl 执行效率总结
SQL执行效率总结 1.关于SQL查询效率,100w数据,查询只要1秒,与您分享: 机器情况 p4: 2.4 内存: 1 G os: windows 2003 数据库: ms sql server 2 ...
- 怎么优化JAVA程序的执行效率和性能?
现在java程序已经够快的了,不过有时写出了的程序效率就不怎么样,很多细节值得我们注意,比如使用StringBuffer或者StringBuilder来拼接或者操作字符串就比直接使用String效率高 ...
- in和exists的区别与SQL执行效率
in和exists的区别与SQL执行效率最近很多论坛又开始讨论in和exists的区别与SQL执行效率的问题,本文特整理一些in和exists的区别与SQL执行效率分析 SQL中in可以分为三类: 1 ...
- in和exists的区别与SQL执行效率分析
可总结为:当子查询表比主查询表大时,用Exists:当子查询表比主查询表小时,用in SQL中in可以分为三类: 1.形如select * from t1 where f1 in ('a','b'), ...
- SQL执行效率总结
1.关于SQL查询效率,100w数据,查询只要1秒,与您分享: 机器情况 p4: 2.4 内存: 1 G os: windows 2003 数据库: ms sql server 2000 目的: 查询 ...
- SQL执行效率2-执行计划
以下语句可以进行SQL 语句执行时间分析,两个Go之间就是SQL查询语句 use Work--数据库名 go set statistics profile on set statistics io o ...
- 提高SQL执行效率的16种方法
项目中优化sql语句执行效率的方法:1)尽量选择较小的列2)将where中用的比较频繁的字段建立索引3)select子句中避免使用'*'4)避免在索引列上使用计算.not in 和<> ...
随机推荐
- html部分---a标签的用法、放置图片与表格;
a标签的用法: 1.加链接 herf <a href="http://www.baidu.com">百度一下</a> 2.加载本地文件 <a hre ...
- mysql 5.5及以前版本的编码问题“Incorrect string value: '\xE6\x9B\xB9\xE5\x86\xAC...' for column 'realname' at row 1”
遇到这个问题,所有的编码都设为utf8了,还是没有用,各种乱码,后来发现这是mysql自己的问题,它在5.5及之前的版本只支持3字节的utf8编码,出现4字节的utf编码时出现错误,参考: http: ...
- linux下遍历目录(转-在于思考)
遍历目录的主要思想 由于目录就是一颗树,所以遍历目录就转换为遍历一棵树.谈到树的遍历就再熟悉不过了,有树的前序.层次和后序遍历,我使用的是前序遍历,后序遍历和前序遍历本质上一样,而层次遍历要比前两个麻 ...
- Android——SharedPreferences存储(作业)
作业:制作一个登录界面,以SP方式存储用户名.用户下次登录时自动显示上次填写的用户名 layout文件: <?xml version="1.0" encoding=" ...
- 用类求圆面积c++
#include<iostream>.#include<math.h>using namespace std;class Circle{ public: d ...
- C# App.config 自定义 配置节 报错“配置系统未能初始化” 解决方法
App.config,结果运行的时候出现了 "配置系统未能初始化" 的错误.找了半天才发现是下面的原因造成的: "如果配置文件中包含configSections元素,则c ...
- HTML 5 canvas —— 基本语法
目录 简述 canvas 基础 2D context API 基本线条 路径 插入图像 像素级操作 文字 阴影 颜色渐变 小节 简述 HTML 5 规范引进了很多新特性,其中最令人期待的之一就是 ca ...
- CLREX
KernelBase.dll!RaiseException() Unknown > coreclr.dll!`RaiseTheExceptionInternalOnly'::`81'::__Bo ...
- line-hieght与vertical-align的区别与联系
7.3 line-height 行高指的是文本行的基线间的距离,但是文本之间的空白距离不仅仅是行高决定的, 同时也受字号的影响. 7.3.1 语 法 line-height属性的具体定义列表如下: 语 ...
- OAuth2.0详解
1.使用场景 A系统存放着订单信息 B系统需要查询A系统中的订单信息,但是必须要A系统验证通过后,才能查询. 此时,我们有两种验证方式: 1)拥有A系统的账户/密码 弊端是对A系统来说,直接提供账户/ ...