Sql語句與存儲過程查詢數(shù)據(jù)的性能測試實現(xiàn)代碼
更新時間:2009年04月25日 02:15:16 作者:
Sql語句 存儲過程查 性能測試對比代碼。
一.建立數(shù)據(jù)庫Liezui_Test
ID int 主鍵 自增
Title varchar(100)
ReadNum int
二.向數(shù)據(jù)庫中插入100萬條數(shù)據(jù)
declare @i int
set @i=1
while @i<=500000
begin
insert into Liezui_Test(Title,ReadNum) values('執(zhí)行總數(shù)統(tǒng)計',@i)
set @i=@i+1
end
GO
declare @i int
set @i=1
while @i<=500000
begin
insert into Liezui_Test(Title,ReadNum) values('毛巾因經(jīng)常處于潮濕狀態(tài)而極易滋生有害細菌',@i)
set @i=@i+1
end
GO
三.增加SelectByTitle存儲過程
Create PROCEDURE [dbo].[SelectByTitle]
AS
BEGIN
Select top 10000 * from Liezui_Test where Title Like '%執(zhí)行%'
END
三.開始測試
首先在頁面內(nèi)放一個repeater 用于綁定數(shù)據(jù) 二個label 用于顯示結(jié)果
測試場景一 : 不綁定Repeater,只進行數(shù)據(jù)庫源的綁定
代碼如下:
Stopwatch st = new Stopwatch();
st.Start();
Repeater1.DataSource = Jinlong.Data.DBHelper.ReturnDataSet("Select top 10000 * from Liezui_Test where Title Like '%執(zhí)行%'").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";
結(jié)果如下:
Label1 Label2
52ms 48ms
39ms 46ms
45ms 44ms
43ms 42ms
37ms 40ms
43ms 44ms
結(jié)論:用Sql語句和存儲過程的速度差不多.
測試場景二 : 綁定Repeater
代碼如下:
Stopwatch st = new Stopwatch();
st.Start();
Repeater1.DataSource = Jinlong.Data.DBHelper.ReturnDataSet("Select top 10000 * from Liezui_Test where Title Like '%執(zhí)行%'").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";
結(jié)果如下:
Label1 Label2
161ms 192ms
205ms 191ms
142ms 208ms
153ms 198ms
134ms 209ms
280ms 335ms
結(jié)論:用存儲過程的速度居然比直接用Sql語句還要慢.
ID int 主鍵 自增
Title varchar(100)
ReadNum int
二.向數(shù)據(jù)庫中插入100萬條數(shù)據(jù)
declare @i int
set @i=1
while @i<=500000
begin
insert into Liezui_Test(Title,ReadNum) values('執(zhí)行總數(shù)統(tǒng)計',@i)
set @i=@i+1
end
GO
declare @i int
set @i=1
while @i<=500000
begin
insert into Liezui_Test(Title,ReadNum) values('毛巾因經(jīng)常處于潮濕狀態(tài)而極易滋生有害細菌',@i)
set @i=@i+1
end
GO
三.增加SelectByTitle存儲過程
Create PROCEDURE [dbo].[SelectByTitle]
AS
BEGIN
Select top 10000 * from Liezui_Test where Title Like '%執(zhí)行%'
END
三.開始測試
首先在頁面內(nèi)放一個repeater 用于綁定數(shù)據(jù) 二個label 用于顯示結(jié)果
測試場景一 : 不綁定Repeater,只進行數(shù)據(jù)庫源的綁定
代碼如下:
Stopwatch st = new Stopwatch();
st.Start();
Repeater1.DataSource = Jinlong.Data.DBHelper.ReturnDataSet("Select top 10000 * from Liezui_Test where Title Like '%執(zhí)行%'").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";
結(jié)果如下:
Label1 Label2
52ms 48ms
39ms 46ms
45ms 44ms
43ms 42ms
37ms 40ms
43ms 44ms
結(jié)論:用Sql語句和存儲過程的速度差不多.
測試場景二 : 綁定Repeater
代碼如下:
Stopwatch st = new Stopwatch();
st.Start();
Repeater1.DataSource = Jinlong.Data.DBHelper.ReturnDataSet("Select top 10000 * from Liezui_Test where Title Like '%執(zhí)行%'").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";
結(jié)果如下:
Label1 Label2
161ms 192ms
205ms 191ms
142ms 208ms
153ms 198ms
134ms 209ms
280ms 335ms
結(jié)論:用存儲過程的速度居然比直接用Sql語句還要慢.
相關文章
SQL?Server日期時間和字符串之間的轉(zhuǎn)換方法實例
處理原始數(shù)據(jù)時,您可能經(jīng)常會遇到存儲為文本的日期值,將這些值轉(zhuǎn)換為日期數(shù)據(jù)類型非常重要,因為在分析過程中日期可能更有價值,下面這篇文章主要給大家介紹了關于SQL?Server日期時間和字符串之間的轉(zhuǎn)換方法,需要的朋友可以參考下2023-06-06數(shù)據(jù)庫性能優(yōu)化一:數(shù)據(jù)庫自身優(yōu)化提升性能
數(shù)據(jù)庫自身優(yōu)化包括:增加次數(shù)據(jù)文件,設置文件自動增長、表分區(qū),索引分區(qū)、分布式數(shù)據(jù)庫設計、整理數(shù)據(jù)庫碎片等等.需要了解的朋友可以參考下2013-01-01