Sql語句與存儲(chǔ)過程查詢數(shù)據(jù)的性能測(cè)試實(shí)現(xiàn)代碼
更新時(shí)間:2009年04月25日 02:15:16 作者:
Sql語句 存儲(chǔ)過程查 性能測(cè)試對(duì)比代碼。
一.建立數(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)計(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ǔ)過程
Create PROCEDURE [dbo].[SelectByTitle]
AS
BEGIN
Select top 10000 * from Liezui_Test where Title Like '%執(zhí)行%'
END
三.開始測(cè)試
首先在頁面內(nèi)放一個(gè)repeater 用于綁定數(shù)據(jù) 二個(gè)label 用于顯示結(jié)果
測(cè)試場(chǎng)景一 : 不綁定Repeater,只進(jìn)行數(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語句和存儲(chǔ)過程的速度差不多.
測(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ǔ)過程的速度居然比直接用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)計(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ǔ)過程
Create PROCEDURE [dbo].[SelectByTitle]
AS
BEGIN
Select top 10000 * from Liezui_Test where Title Like '%執(zhí)行%'
END
三.開始測(cè)試
首先在頁面內(nèi)放一個(gè)repeater 用于綁定數(shù)據(jù) 二個(gè)label 用于顯示結(jié)果
測(cè)試場(chǎng)景一 : 不綁定Repeater,只進(jìn)行數(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語句和存儲(chǔ)過程的速度差不多.
測(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ǔ)過程的速度居然比直接用Sql語句還要慢.
相關(guān)文章
sqlserver 手工實(shí)現(xiàn)差異備份的步驟
sqlserver 手工實(shí)現(xiàn)差異備份的步驟,需要的朋友可以參考下。2011-04-04SQL?Server日期時(shí)間和字符串之間的轉(zhuǎn)換方法實(shí)例
處理原始數(shù)據(jù)時(shí),您可能經(jīng)常會(huì)遇到存儲(chǔ)為文本的日期值,將這些值轉(zhuǎn)換為日期數(shù)據(jù)類型非常重要,因?yàn)樵诜治鲞^程中日期可能更有價(jià)值,下面這篇文章主要給大家介紹了關(guān)于SQL?Server日期時(shí)間和字符串之間的轉(zhuǎn)換方法,需要的朋友可以參考下2023-06-06數(shù)據(jù)庫性能優(yōu)化一:數(shù)據(jù)庫自身優(yōu)化提升性能
數(shù)據(jù)庫自身優(yōu)化包括:增加次數(shù)據(jù)文件,設(shè)置文件自動(dòng)增長(zhǎng)、表分區(qū),索引分區(qū)、分布式數(shù)據(jù)庫設(shè)計(jì)、整理數(shù)據(jù)庫碎片等等.需要了解的朋友可以參考下2013-01-01詳解SQL Server表和索引存儲(chǔ)結(jié)構(gòu)
這篇文章主要介紹了詳解SQL Server表和索引存儲(chǔ)結(jié)構(gòu),有助于大家對(duì)SQL存儲(chǔ)方式有深入的理解,參考學(xué)習(xí)下吧。2017-11-11sql server學(xué)習(xí)基礎(chǔ)之內(nèi)存初探
這篇文章主要給大家介紹了關(guān)于sql server中內(nèi)存的相關(guān)資料,文中通過圖文以及示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者理解sql server具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07