Sql語(yǔ)句與存儲(chǔ)過(guò)程查詢數(shù)據(jù)的性能測(cè)試實(shí)現(xiàn)代碼
更新時(shí)間:2009年04月25日 02:15:16 作者:
Sql語(yǔ)句 存儲(chǔ)過(guò)程查 性能測(cè)試對(duì)比代碼。
一.建立數(shù)據(jù)庫(kù)Liezui_Test
ID int 主鍵 自增
Title varchar(100)
ReadNum int
二.向數(shù)據(jù)庫(kù)中插入100萬(wàn)條數(shù)據(jù)
declare @i int
set @i=1
while @i<=500000
begin
insert into Liezui_Test(Title,ReadNum) values('執(zhí)行總數(shù)統(tǒng)計(jì)',@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)而極易滋生有害細(xì)菌',@i)
set @i=@i+1
end
GO
三.增加SelectByTitle存儲(chǔ)過(guò)程
Create PROCEDURE [dbo].[SelectByTitle]
AS
BEGIN
Select top 10000 * from Liezui_Test where Title Like '%執(zhí)行%'
END
三.開(kāi)始測(cè)試
首先在頁(yè)面內(nèi)放一個(gè)repeater 用于綁定數(shù)據(jù) 二個(gè)label 用于顯示結(jié)果
測(cè)試場(chǎng)景一 : 不綁定Repeater,只進(jìn)行數(shù)據(jù)庫(kù)源的綁定
代碼如下:
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語(yǔ)句和存儲(chǔ)過(guò)程的速度差不多.
測(cè)試場(chǎng)景二 : 綁定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é)論:用存儲(chǔ)過(guò)程的速度居然比直接用Sql語(yǔ)句還要慢.
ID int 主鍵 自增
Title varchar(100)
ReadNum int
二.向數(shù)據(jù)庫(kù)中插入100萬(wàn)條數(shù)據(jù)
declare @i int
set @i=1
while @i<=500000
begin
insert into Liezui_Test(Title,ReadNum) values('執(zhí)行總數(shù)統(tǒng)計(jì)',@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)而極易滋生有害細(xì)菌',@i)
set @i=@i+1
end
GO
三.增加SelectByTitle存儲(chǔ)過(guò)程
Create PROCEDURE [dbo].[SelectByTitle]
AS
BEGIN
Select top 10000 * from Liezui_Test where Title Like '%執(zhí)行%'
END
三.開(kāi)始測(cè)試
首先在頁(yè)面內(nèi)放一個(gè)repeater 用于綁定數(shù)據(jù) 二個(gè)label 用于顯示結(jié)果
測(cè)試場(chǎng)景一 : 不綁定Repeater,只進(jìn)行數(shù)據(jù)庫(kù)源的綁定
代碼如下:
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語(yǔ)句和存儲(chǔ)過(guò)程的速度差不多.
測(cè)試場(chǎng)景二 : 綁定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é)論:用存儲(chǔ)過(guò)程的速度居然比直接用Sql語(yǔ)句還要慢.
相關(guān)文章
Windows2012配置SQLServer2014AlwaysOn的圖解
SQLserver 2014 AlwaysOn增強(qiáng)了原有的數(shù)據(jù)庫(kù)鏡像功能,使得先前的單一數(shù)據(jù)庫(kù)故障轉(zhuǎn)移變成以組(多個(gè)數(shù)據(jù))為單位的故障轉(zhuǎn)移。接下來(lái)通過(guò)本文給大家介紹Windows2012配置SQLServer2014AlwaysOn的方法,感興趣的朋友一起學(xué)習(xí)吧2016-04-04
在安裝了Sql2000的基礎(chǔ)上安裝Sql2005的詳細(xì)過(guò)程 圖文
在安裝了Sql2000的基礎(chǔ)上安裝Sql2005的詳細(xì)過(guò)程 圖文方法,需要的朋友可以參考下。2011-03-03
將MS SQL SERVER數(shù)據(jù)庫(kù)運(yùn)行在普通用戶(獨(dú)立用戶)狀態(tài)下的設(shè)置方法終結(jié)篇
最近接手了一臺(tái)服務(wù)器,里面安裝了sqlserver,為了安全考慮,我們將sqlserver在普通權(quán)限下運(yùn)行,這樣就不會(huì)因?yàn)閟qlserver的自身安全問(wèn)題,導(dǎo)致服務(wù)器成為肉雞的危險(xiǎn)。2010-05-05
通過(guò)navicat連接SQL?Server數(shù)據(jù)庫(kù)的詳細(xì)步驟
本文介紹如何通過(guò)navicat連接SQL?Server數(shù)據(jù)庫(kù),以往總是使SQL?Server客戶端來(lái)連接SQL?Server數(shù)據(jù)庫(kù),但是SQL?Server客戶端一般有幾百M(fèi)的大小,而且安裝繁瑣配置麻煩,如果可以通過(guò)Navicat直接連接SQL?Server則會(huì)非常輕松方便,需要的朋友可以參考下2023-12-12
SQL?Server2022數(shù)據(jù)庫(kù)安裝及配置過(guò)程
最近發(fā)現(xiàn)有諸多的小伙伴們對(duì)于sqlserver安裝教程2022,sql server安裝教程這個(gè)問(wèn)題都頗為感興趣的,這篇文章主要給大家介紹了關(guān)于SQL?Server2022數(shù)據(jù)庫(kù)安裝及配置的相關(guān)資料,需要的朋友可以參考下2023-12-12
sql 查詢結(jié)果合并union all用法_數(shù)據(jù)庫(kù)技巧
sql語(yǔ)句查詢結(jié)果合并union all用法_數(shù)據(jù)庫(kù)技巧,需要的朋友可以參考下。2009-11-11

