SQL语句与存储过程查询数据的性能测试

发表于:2010-7-27 12:47

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  测试目的:测试执行一条SQL语句,直接执行与放在存储过程中执行速度比较
  
  一.建立数据库Liezui_Test

ID        int    主键 自增
Title     varchar(100)
ReadNum   int

  二.向数据库中插入100万条数据

declare @i int
set @i=1
while @i<=500000
begin
        insert into Liezui_Test(Title,ReadNum) values('执行总数统计',@i)
        set @i=@i+1
end
GO
declare @i int
set @i=1
while @i<=500000
begin
             insert into Liezui_Test(Title,ReadNum) values('毛巾因经常处于潮湿状态而极易滋生有害细菌',@i)
        set @i=@i+1
end
GO

  三.增加SelectByTitle存储过程

Create PROCEDURE [dbo].[SelectByTitle]
AS
BEGIN
Select top 10000 * from Liezui_Test where Title Like '%执行%'
END

  四.开始测试

  首先在页面内放一个repeater用于绑定数据二个label用于显示结果

  测试场景一:不绑定Repeater,只进行数据库源的绑定

  代码如下:

Stopwatch st = new Stopwatch();
st.Start();
Repeater1.DataSource = Jinlong.Data.DBHelper.ReturnDataSet("Select top 10000 * from Liezui_Test where Title Like '%执行%'").Tables[0];
st.Stop();
Label1.Text = st.ElapsedMilliseconds.ToString() + "ms";
Stopwatch st2 = new Stopwatch();
st2.Start();
SqlParameter[] para = { };
Repeater1.DataSource = Jinlong.Data.DBHelper.RunProcedure("SelectByTitle", para, "ds");
st2.Stop();
Label2.Text = st2.ElapsedMilliseconds.ToString() + "ms";

  结果如下:

Label1  Label2
52ms    48ms
39ms    46ms
45ms    44ms
43ms    42ms
37ms    40ms
43ms    44ms

  结论:用Sql语句和存储过程的速度差不多.

  测试场景二 : 绑定Repeater

  代码如下:

Stopwatch st = new Stopwatch();
st.Start();
Repeater1.DataSource = Jinlong.Data.DBHelper.ReturnDataSet("Select top 10000 * from Liezui_Test where Title Like '%执行%'").Tables[0];
Repeater1.DataBind();
st.Stop();
Label1.Text = st.ElapsedMilliseconds.ToString() + "ms";
Stopwatch st2 = new Stopwatch();
st2.Start();
SqlParameter[] para = { };
Repeater1.DataSource = Jinlong.Data.DBHelper.RunProcedure("SelectByTitle", para, "ds");
Repeater1.DataBind();
st2.Stop();
Label2.Text = st2.ElapsedMilliseconds.ToString() + "ms";

  结果如下:

Label1   Label2
161ms    192ms
205ms    191ms
142ms    208ms
153ms    198ms
134ms    209ms
280ms    335ms

  结论:用存储过程的速度居然比直接用Sql语句还要慢.
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • wyrf584
    2010-8-17 14:31:08

    这么就没了?

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号