Sql语句与存储过程查询数据的性能测试实现代码
2023-06-13 09:14:09 时间
一.建立数据库Liezui_Test
IDint主键自增
Titlevarchar(100)
ReadNumint
二.向数据库中插入100万条数据
declare@iint
set@i=1
while@i<=500000
begin
insertintoLiezui_Test(Title,ReadNum)values("执行总数统计",@i)
set@i=@i+1
end
GO
declare@iint
set@i=1
while@i<=500000
begin
insertintoLiezui_Test(Title,ReadNum)values("毛巾因经常处于潮湿状态而极易滋生有害细菌",@i)
set@i=@i+1
end
GO
三.增加SelectByTitle存储过程
CreatePROCEDURE[dbo].[SelectByTitle]
AS
BEGIN
Selecttop10000*fromLiezui_TestwhereTitleLike"%执行%"
END
三.开始测试
首先在页面内放一个repeater用于绑定数据二个label用于显示结果
测试场景一:不绑定Repeater,只进行数据库源的绑定
代码如下:
Stopwatchst=newStopwatch();
st.Start();
Repeater1.DataSource=Jinlong.Data.DBHelper.ReturnDataSet("Selecttop10000*fromLiezui_TestwhereTitleLike"%执行%"").Tables[0];
st.Stop();
Label1.Text=st.ElapsedMilliseconds.ToString()+"ms";
Stopwatchst2=newStopwatch();
st2.Start();
SqlParameter[]para={};
Repeater1.DataSource=Jinlong.Data.DBHelper.RunProcedure("SelectByTitle",para,"ds");
st2.Stop();
Label2.Text=st2.ElapsedMilliseconds.ToString()+"ms";
结果如下:
Label1Label2
52ms48ms
39ms46ms
45ms44ms
43ms42ms
37ms40ms
43ms44ms
结论:用Sql语句和存储过程的速度差不多.
测试场景二:绑定Repeater
代码如下:
Stopwatchst=newStopwatch();
st.Start();
Repeater1.DataSource=Jinlong.Data.DBHelper.ReturnDataSet("Selecttop10000*fromLiezui_TestwhereTitleLike"%执行%"").Tables[0];
Repeater1.DataBind();
st.Stop();
Label1.Text=st.ElapsedMilliseconds.ToString()+"ms";
Stopwatchst2=newStopwatch();
st2.Start();
SqlParameter[]para={};
Repeater1.DataSource=Jinlong.Data.DBHelper.RunProcedure("SelectByTitle",para,"ds");
Repeater1.DataBind();
st2.Stop();
Label2.Text=st2.ElapsedMilliseconds.ToString()+"ms";
结果如下:
Label1Label2
161ms192ms
205ms191ms
142ms208ms
153ms198ms
134ms209ms
280ms335ms
结论:用存储过程的速度居然比直接用Sql语句还要慢.
IDint主键自增
Titlevarchar(100)
ReadNumint
二.向数据库中插入100万条数据
declare@iint
set@i=1
while@i<=500000
begin
insertintoLiezui_Test(Title,ReadNum)values("执行总数统计",@i)
set@i=@i+1
end
GO
declare@iint
set@i=1
while@i<=500000
begin
insertintoLiezui_Test(Title,ReadNum)values("毛巾因经常处于潮湿状态而极易滋生有害细菌",@i)
set@i=@i+1
end
GO
三.增加SelectByTitle存储过程
CreatePROCEDURE[dbo].[SelectByTitle]
AS
BEGIN
Selecttop10000*fromLiezui_TestwhereTitleLike"%执行%"
END
三.开始测试
首先在页面内放一个repeater用于绑定数据二个label用于显示结果
测试场景一:不绑定Repeater,只进行数据库源的绑定
代码如下:
Stopwatchst=newStopwatch();
st.Start();
Repeater1.DataSource=Jinlong.Data.DBHelper.ReturnDataSet("Selecttop10000*fromLiezui_TestwhereTitleLike"%执行%"").Tables[0];
st.Stop();
Label1.Text=st.ElapsedMilliseconds.ToString()+"ms";
Stopwatchst2=newStopwatch();
st2.Start();
SqlParameter[]para={};
Repeater1.DataSource=Jinlong.Data.DBHelper.RunProcedure("SelectByTitle",para,"ds");
st2.Stop();
Label2.Text=st2.ElapsedMilliseconds.ToString()+"ms";
结果如下:
Label1Label2
52ms48ms
39ms46ms
45ms44ms
43ms42ms
37ms40ms
43ms44ms
结论:用Sql语句和存储过程的速度差不多.
测试场景二:绑定Repeater
代码如下:
Stopwatchst=newStopwatch();
st.Start();
Repeater1.DataSource=Jinlong.Data.DBHelper.ReturnDataSet("Selecttop10000*fromLiezui_TestwhereTitleLike"%执行%"").Tables[0];
Repeater1.DataBind();
st.Stop();
Label1.Text=st.ElapsedMilliseconds.ToString()+"ms";
Stopwatchst2=newStopwatch();
st2.Start();
SqlParameter[]para={};
Repeater1.DataSource=Jinlong.Data.DBHelper.RunProcedure("SelectByTitle",para,"ds");
Repeater1.DataBind();
st2.Stop();
Label2.Text=st2.ElapsedMilliseconds.ToString()+"ms";
结果如下:
Label1Label2
161ms192ms
205ms191ms
142ms208ms
153ms198ms
134ms209ms
280ms335ms
结论:用存储过程的速度居然比直接用Sql语句还要慢.
相关文章
- 10种用于渗透测试的漏洞扫描工具有哪些_渗透测试和漏洞扫描区别
- 【存储测试】vdbench存储性能测试工具
- 【测试开发】python系列教程:字符串
- Python 接口测试之接口请求方法封装
- 18万美元offer!ChatGPT通过谷歌L3入职测试,人类码农危?
- SQL开发知识:Sql中存储过程的定义、修改和删除操作
- Redis基本使用测试详解编程语言
- 测试机器大小端存储的方法详解编程语言
- Redis系统压力测试:改善性能的最佳方案(redis压测)
- Linux服务器性能提升:如何进行测试(linux服务器性能测试)
- MySQL 测试存储过程:实现最佳性能(mysql测试存储过程)
- Ubuntu 正测试 “Aethercast” 功能:通过 Miracast 连接 WiFi 显示
- Oracle存储过程测试的注意事项(oracle测试存储过程)
- 稳定版临近,苹果希望扩大 iOS 15 Beta 版测试
- Linux USB设备测试:完善你的办公室环境(linuxusb测试)
- 测试Redis解决数据存储问题的要点(测试redis要点)
- 接口测试前必须查看Redis(接口测试需要查redis)