当前位置: 首页 > 图文教程 > 数据库 > MSSQL > Sql语句与存储过程查询数据的性能测试实现代码

MSSQL
SQL Server数据库搭建农村信息化的方案
建立合理的索引提高SQL Server的性能
如何利用SQL Server 2005中的模板参数
浅析SQL Server三大算法的I/O成本
SQL Server与Oracle数据库在安全性上的异同
解析SQL Server与ASP互操作的时间处理
sql server 中删除默认约束的通用sql脚本
实用技巧:优化SQL Server数据库查询方法
SQL Server的BUILTIN\Administrators用户
史上最简单的方法复制或迁移Oracle数据库
数据库自动化技术弥补数据库DBA短缺难题
教你怎样在Oracle数据库中高速导出/导入
怎样在SQL Server中去除表中不可见字符
怎样使用 SQL Server 数据库嵌套子查询
细化解析:转换 SQL数据库时的疑难问题
细化解析:SQL Server 2000 的各种版本
轻松掌握 SQL Server 2000数据库的构架
带你轻松了解 SQL Server数据库的组成
解决SQL Server日志文件损坏严重的问题
检测你的SQL Server是否有特洛伊木马

MSSQL 中的 Sql语句与存储过程查询数据的性能测试实现代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 124 ::
收藏到网摘: n/a

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语句还要慢.