性能测试:动态生成SQL语句 VS 存储过程
来源:互联网 发布:mb七剑再版知乎 编辑:程序博客网 时间:2024/05/22 10:46
当软件开发使用MicrosoftSQL2005存储数据时,有多种方式来检索信息。 其中就有动态生成的SQL语句和存储过程。但是他们的性能是否一样?
下载测试程序和源代码
测试描述:
设计这个测试的目的是来比较在.NET应用程序中动态SQL查询语句和存储过程执行的时间是否相等。
测试过程中的功能
在这两种情况下,速度测试为两套SQL语句提供完全相同的功能,这是至关重要的。这是同样重要的是,各种语句的使用。每个测试运行,以adventureworks示例数据库为例, 4 个SQL语句相当于存储过程。
四个过程如下:
在单表中查询所有数据;
使用where条件查询一个表中的某行
在三个表中使用两个联合和where条件查询某些数据
在三个表中使用Join,子查询和where语句查询某些数据
循环
执行一个单一的SELECT语句速度太快,要准确测量。为了避免错误和异常,建造回路和重复执行测试代码。每个测试,循环被执行一万次。时间测试的时间是使用秒表自动控制。每个测试是多次和平均计算结果。
测试条件
硬件
测试结果如下表所示,是那些生产使用的Athlon64 3200 + 2 GB的内存。这些试验均显示出相对的进一步测试结果是在不同的设备上实验。 测试在3个作业系统中执行,每一个都是最新的Service Pack和修补程序。这些是:
Windows XP Windows Server 2003 R2 Windows Vista Ultimate
在每个测试,该软件被编译为.NET框架3.5控制台应用程序
Compiled using Visual Studio 2008 Professional Edition
Compiled using Visual C# 2008 Express Edition
结果
下表表明四个实验中循环语句的平均时间。前两列表示使用动态生成SQL语句和存储过程,第三列表示两者的不同百分比:
Dynamic SQL Stored Procedure Difference
Simple Select 21.83s 21.82s 0.05%
Select with Where Clause 2.51s 2.49s 0.80%
Select with Joins 25.08s 25.22 -0.56%
Select with Sub-Select 24.68s 26.47 -7.25%
结论
结果表示在多数情况下使用动态生成SQL语句和存储过程的不同是不容忽视的。明显的区别是在最后使用join,子查询和where语句。在这种情况下使用存储过程在性能上有小的下降。这些结果表明,普遍的观点认为,存储过程速度比动态SQL快是不正确的。这种想法往往源于错误的思想,SQL Server的预先编制的执行存储过程。不过,单是表现不应该是拒绝使用存储过程的依据,因为他们的确提供了额外的好处。
原文:http://www.blackwasp.co.uk/SpeedTestSqlSproc.aspx
- 性能测试:动态生成SQL语句 VS 存储过程
- 性能测试:动态生成SQL语句 VS 存储过程
- 性能测试:动态生成SQL语句 VS 存储过程
- 存储过程里动态生成包含SQL语句字符串
- 存储过程,--生成SQL语句
- sql 存储过程生成sql 插入语句
- 存储过程生成动态条件查询语句
- 生成Insert语句SQL存储过程
- SQL Server 存储过程生成insert语句
- 存储过程中执行动态Sql语句
- mysql 存储过程 动态sql语句
- mysql存储过程执行动态sql语句
- 存储过程中执行动态Sql语句
- 存储过程中执行动态Sql语句
- 存储过程中执行动态Sql语句
- 存储过程中执行动态Sql语句
- 存储过程中执行动态Sql语句
- 摁钉:Sql语句与存储过程查询数据的性能测试
- Windows Server 2008虚拟技术要点
- 数据库操作包——java.sql(来自JDK文档)
- C#实现web信息自动抓取
- VC++ 的串口通讯
- 换个眼光看看程序(1)
- 性能测试:动态生成SQL语句 VS 存储过程
- 会抽到自己的那张吗?
- 读取sql server表的字段名,字段类型,字段长度,字段属性描述的sql语句
- 修改注册表
- [FAQ]VC常见问题★强烈推荐
- 上传一个浏览器版本
- ppt模版设计完成之后导入方式:
- struts2.0的标签学习
- 程序题找错误