Sql語(yǔ)句與存儲(chǔ)過(guò)程查詢數(shù)據(jù)的性能測(cè)試實(shí)現(xiàn)代碼
發(fā)布日期:2022-02-02 11:52 | 文章來(lái)源:源碼中國(guó)
一.建立數(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ǔ)句還要慢.
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
相關(guān)文章