一.建立数据库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语句还要慢.
Sql语句与存储过程查询数据的性能测试实现代码
时间: 2024-09-13 22:26:32
Sql语句与存储过程查询数据的性能测试实现代码的相关文章
Sql语句与存储过程查询数据的性能测试实现代码_MsSql
一.建立数据库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 beg
用SQL语句实现随机查询数据并不显示错误数据的方法_MsSql
问题:上级单位要来检查数据,我的服务器的数据库是SQL server 2000,上级单位要求我用SQL语句在服务器端随机查询50条数据出来.可是我的服务器里有些错误数据不希望他们看到,能不能有什么办法不让他们看到. SQL语句: select top 50 x from a_1 where c=xxxx 语句就是要求这样写,然后他们来运行,怎么办,有什么办法可以在sql server上设置,然后使得这50条数据只在我找出的数据(比如正确的数据400)里随机查询出.尽量不要改动SQL语句. Pea
hql-hibernate框架 使用sql语句 select count查询不到。。
问题描述 hibernate框架 使用sql语句 select count查询不到.. 代码 String sql = "select count(servId) from "+set; sess=sessionFactory.openSession(); tx=sess.beginTransaction(); Query query = sess.createSQLQuery(sql); BigDecimal count = (BigDecimal)query.uniqueResul
数据-怎样用sql语句,使查询速度更快
问题描述 怎样用sql语句,使查询速度更快 在使用数据库的过程中,经常会有10W条甚至100W条级以上的数据记录,使用常规的sql语句在这种级别的数据库中查询,反馈的速度非常慢,时有几分钟才能得到查询反馈的数据结果:本人曾经看过一个sql语句,能在100W级的数据记录中,只用几秒的时间就得到查询结果,但是现在却不曾记得那条语句是如何写的了,不知哪位大神有类似或者这种技能,能否指点小弟一下 解决方案 1.建立索引 2.优化SQL语句 3.条件精确,使用索引 4.最好使用内部过程 5.只取需要的数据
sql语句 连表查询-连表查询 sql语句问题
问题描述 连表查询 sql语句问题 有个商品表,和商品属性表,一个商品,在商品属性表里有好几条,我想连表查出,一条商品对应的两个属性,两个属性在一行显示,怎么查,属性表的数据是这样 1 商品id 规格 2 商品id 厂家 我想要的结果: 1 商品id 规格 厂家 大能们,帮帮忙 解决方案 查询库中有多少表的SQL语句单表查询树形结构的SQL语句命名查询的sql语句的问题 解决方案二: 你select出来的结果当成colum
sql语句多表查询中聚合函数的使用问题
问题描述 sql语句多表查询中聚合函数的使用问题 表A,B,C. A表中有title,code, b表中为code,media_code;(均不为主键,code会有重复) c表中有media_code,shrink (media_code为主键) 我的目的为取出A表中的title和c表中的shrink 联立:A.code→B.code, B.media_code→C.media_code 代码如下 select title,shrink from tableA,tableC where medi
mdb-利用SQL语句将原来的数据表进行修改
问题描述 利用SQL语句将原来的数据表进行修改 由于比较复杂,所以我想做的简单一点,就是将原来mdb里面选中的那张表,直接清空数据(保留列名),然后再重新给他一张新的表.因为我一开始是将DGV的表格导入MDB中,现在修改了DGV中的值,想要连带着MDB中的值也一起修改,之前用的sql是插入,所以如果用原先的方法,他还是插入一张新的,我需要的是修改而不是插入 解决方案 清空MDB里面的表,在导数据不就行了 解决方案二: 直接用update table 字段=新值 where id=xxx就可以了.
报表制作sql语句,模糊查询
问题描述 报表制作sql语句,模糊查询 select [BinnId][Code][BoxCode][SCode][CreateName][CreateTime] from dbo.Logistics_Binn where len(SCode)-len(replace(SCode''''))!=8 ${if(len(p1)==0"and SCode collate Chinese_PRC_CS_AS like '%""+p1+""%' or BoxCode
LINQ体验(17)——LINQ to SQL语句之动态查询
高级特性 本文介绍LINQ的高级特性,其包括大家都关心的动态查询的用法 ,另外简单提下ID标识这个知识. 动态查询 有这样一个场景:应用程 序可能会提供一个用户界面,用户可以使用该用户界面指定一个或多个谓词来筛 选数据.这种情况在编译时不知道查询的细节,动态查询将十分有用. 在LINQ中,Lambda表达式是许多标准查询运算符的基础,编译器创建lambda表达 式以捕获基础查询方法(例如 Where.Select.Order By.Take While 以及其 他方法)中定义的计算.表达式目录树