如何测试sql语句性能,提高执行效率
有时候我们经常为我们的sql语句执行效率低下发愁,反复优化后,可还是得不到提高
那么你就用这条语句找出你sql到底是在哪里慢了
示例:
SET STATISTICS io ON
SET STATISTICS time ON
go
---你要测试的sql语句
select top 100 * from TBL_Cot_RecStaticList
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 毫秒。
转发原文:http://www.cnblogs.com/lynnlin/archive/2008/06/18/1224376.html
为了让您的程序执行的效率更高,SQL的效率一定不可忽视。
现有以下方法去检测SQL的执行效率。
对于多表查询的效率测试:
1)直接from ,where方式。
SET STATISTICS io ON
SET STATISTICS time ON
go
---你要测试的sql语句
select g.grpName,t.grpID,t.flowID,t.typeName,t.description
from hyGroup g ,hyType t where t.grpID = g.flowID
go
SET STATISTICS profile OFF
SET STATISTICS io OFF
SET STATISTICS time OFF
SQL Server 分析和编译时间:
CPU 时间 = 4 毫秒,占用时间 = 4 毫秒。
(8 行受影响)
表 'hyType'。扫描计数 1,逻辑读取 7 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'hyGroup'。扫描计数 1,逻辑读取 1 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
2)inner join 方式:
SET STATISTICS io ON
SET STATISTICS time ON
go
---你要测试的sql语句
select g.grpName,t.grpID,t.flowID,t.typeName,t.description
from hyGroup g inner join hyType t on t.grpID = g.flowID
go
SET STATISTICS profile OFF
SET STATISTICS io OFF
SET STATISTICS time OFF
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
(8 行受影响)
表 'hyType'。扫描计数 1,逻辑读取 7 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'hyGroup'。扫描计数 1,逻辑读取 1 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
3)left join 方式
SET STATISTICS io ON
SET STATISTICS time ON
go
---你要测试的sql语句
select g.grpName,t.grpID,t.flowID,t.typeName,t.description
from hyGroup g left join hyType t on t.grpID = g.flowID
go
SET STATISTICS profile OFF
SET STATISTICS io OFF
SET STATISTICS time OFF
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 3 毫秒。
(10 行受影响)
表 'hyType'。扫描计数 1,逻辑读取 7 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'hyGroup'。扫描计数 1,逻辑读取 1 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
4)right join 方式
SET STATISTICS io ON
SET STATISTICS time ON
go
---你要测试的sql语句
select g.grpName,t.grpID,t.flowID,t.typeName,t.description
from hyGroup g right join hyType t on t.grpID = g.flowID
go
SET STATISTICS profile OFF
SET STATISTICS io OFF
SET STATISTICS time OFF
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 3 毫秒。
(8 行受影响)
表 'hyGroup'。扫描计数 1,逻辑读取 8 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'hyType'。扫描计数 1,逻辑读取 1 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
最新文章
- 蚁群算法求解旅行商问题(附c和matlab源代码)
- AxureRP8实战手册(基础11-20)
- 数组第K小数问题 及其对于 快排和堆排 的相关优化比较
- MySQL数据库之数据类型BOOL/BOOLEAN与TINYINT测试总结
- Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
- 【现代程序设计】homework-09
- .Net中JS调用后台的方法
- UDP编程(八)
- STM32 串口功能 库函数 详解和DMA 串口高级运用(转载)
- C#中的OLEDB连接2
- TimeZone 时区 (JS .NET JSON MYSQL)
- UTL_FILE 的用法
- ViewSwitcher的功能与用法
- UVA - 10249 The Grand Dinner
- webpack4.0各个击破(9)—— karma篇
- Axis2开发WebService客户端 的3种方式
- 20172301 《Java软件结构与数据结构》实验二报告
- VS web.config/app.conifg配置文件自定义类型使用智能感知功能
- delphi XE7 判断手机返回键
- 安装ESXI 5.5卡在LSI_MR3.V00解决方案