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 [TestCase] FROM [TestCaseSelect]
–你的SQL脚本结束
GO
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())
二是通过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执行效率和性能测试方法总结的更多相关文章
- [转]SQLServer SQL执行效率和性能测试方法总结
本文转自:http://www.zhixing123.cn/net/27495.html 对于做管理系统和分析系统的程序员,复杂SQL语句是不可避免的,面对海量数据,有时候经过优化的某一条语句,可以提 ...
- SQL执行效率和性能测试方法
对于做管理系统和分析系统的程序员,复杂SQL语句是不可避免的,面对海量数据,有时候经过优化的某一条语句,可以提高执行效率和整体运行性能.如何选择SQL语句,本文提供了两种方法,分别对多条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 和<> ...
随机推荐
- ubuntu配置ftp服务器
sudo apt-get update sudo apt-get install vsftpd sudo vi /etc/vsftpd.conf listen=YES anonymous_enable ...
- Integer与int的区别
简述:int与Integer的区别: 对于它们,我们可能只是知道简单的区别.Integer是int的一个封装类,int的初始值为0,而Integer的初始值为null.但是他们之间真的仅仅只有这些区别 ...
- Menu与ActionBar的爱恨情仇
最近在开发一款音乐播放器,在开发过程中遇到了一点小麻烦,通过android API搞清楚了Menu与ActionBar的爱恨情仇,写了个小Demo祭奠一下那些年我们陷进去的坑,有不对的地方请大神们批评 ...
- linux Mint 安装apache2
sudo apt-get install apache2 y 启动apache2 /etc/init.d/apache2 restart 浏览器输入localhost看看是否访问正常 apache2 ...
- ssh配置git clone简易流程
1. 生成密钥 ssh-keygen -t rsa -C "jaynaruto@qq.com" //如果只有一对密钥,建议不要修改默认的密钥名称,即一直按回车即可 此命令会在你当前 ...
- 使用Dir,遍历文件夹下所有子文件夹及文件
'------------------------------------------- '获取某文件夹下所有文件和子目录下的文件 '--------------------------------- ...
- EndNote(三)之中文引文导入方式
上一篇文章讲了Web of Science,PubMed的引文如何导入到EndNote中.这次,写一下常用的中文文献查找网站的引文如何导入EndNote. 本人常用的中文文献查找网站,主要是知网(CN ...
- Qt 二维码
1.生成二维码 利用第三方库qrencode ,将qrencode源码添加到自己的程序中,直接调用使用. 参考http://blog.csdn.net/zhangxufei/article/detai ...
- JSP复习整理(一)表单
好久没更了,一周完成了SRDP,一周完成了课程设计,这一周就要好好回顾回顾Java Web的学习轨迹了. 用的eclipse Mars 一.表单 start.jsp <%@ page langu ...
- Position属性四个值:static、fixed、absolute和relative的区别和用法
Position属性四个值:static.fixed.absolute和relative的区别和用法 在用CSS+DIV进行布局的时候,一直对position的四个属性值relative,absolu ...