性能测试:动态生成SQL语句 VS 存储过程

当软件开发使用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

原文:http://blog.csdn.net/xuejinyoulan/archive/2008/05/26/2481216.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值