本人用sql server 和asp寫了一個(gè)簡(jiǎn)單的留言本,在不斷的嘗試中發(fā)現(xiàn),分頁(yè)顯示留言的時(shí)候,不同的執(zhí)行方式,時(shí)間上的一些差別。
下面通過(guò)對(duì)比來(lái)看看幾種方式的用時(shí)對(duì)比。
一,使用存儲(chǔ)過(guò)程分頁(yè),這種情況又分為兩種方式:
第一種,使用command對(duì)象,如下:
Set Cmd=server.CreateObject("Adodb.Command")
Cmd.ActiveConnection=conn
Cmd.CommandText="ycuu_gb_getmsg"
Cmd.CommandType=4'adCmdStoredProc
cmd.prepared=true'
set param=Cmd.CreateParameter("@iPageNo",adInteger,1,2,Page)
Cmd.Parameters.Append param
set param=Cmd.CreateParameter("@iPageSize",adInteger,1,2,PageSizeConst)
Cmd.Parameters.Append param
set rs=Cmd.execute
第二種,使用connection對(duì)象的執(zhí)行方法直接執(zhí)行,具體如下:
set rs=conn.execute ("execute ycuu_gb_getmsg "&page&", "&pagesizeConst)
二,不使用存儲(chǔ)過(guò)程,直接使用ADODB.RecordSet的功能來(lái)分頁(yè),具體代碼如下:
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "Select * FROM Guestbook Order By dateandtime Desc"
rs.open sql,conn,1,1
rs.pagesize = 150'每頁(yè)顯示的留言數(shù)量,
total = rs.RecordCount
mypagesize = rs.pagesize
rs.absolutepage = page
為了更加明顯地顯示出速度,我把每頁(yè)顯示的留言數(shù)量加大到150(事實(shí)上當(dāng)然不會(huì)設(shè)置這么大的數(shù)值啦)。至于我機(jī)器的配置,就省略不說(shuō)了,因?yàn)橹饕撬俣葘?duì)比。
發(fā)現(xiàn),執(zhí)行的時(shí)候時(shí)間分別如下:
第一種:穩(wěn)定于0.1953125 秒到0.2109375 秒之間,平均值大概是:0.20秒
第二種:穩(wěn)定于0.1716875 秒到0.1857秒之間,平均值大概是:0.177秒
第三種:穩(wěn)定于0.4375 秒到0.4632秒之間,平均值大概是:0.45秒
但是,當(dāng)讀取的記錄條數(shù)為20的時(shí)候,結(jié)果如下:
發(fā)現(xiàn),執(zhí)行的時(shí)候時(shí)間分別如下:
第一種:穩(wěn)定于.0390625 秒到.0546875 秒之間,平均值大概是:0.045秒
第二種:穩(wěn)定于0.046875 秒到.0546875 秒之間,平均值大概是:0.050秒
第三種:穩(wěn)定于.09375 秒到0.1015625 秒之間,平均值大概是:0.97秒
在這樣看來(lái),似乎conn.execute和command.execute這兩種方式似乎差別并不大,而前者的調(diào)用方式好像更加簡(jiǎn)單一點(diǎn)。同時(shí),在這里可以看出分頁(yè)的存儲(chǔ)過(guò)程速度確實(shí)比recordset的分頁(yè)速度要快很多。
PS:小弟第一次發(fā)文,嗚嗚嗚,發(fā)現(xiàn)寫一篇好的真難,我以后會(huì)努力的了。希望大家包涵我這次寫得不好。對(duì)了,我還想問(wèn)問(wèn)各位大俠conn.execute和command.execute這兩種方式中那種更加好的,呵呵,因?yàn)槲以诰W(wǎng)上找到的都是后者這種方式執(zhí)行存儲(chǔ)過(guò)程的。不知道為什么不用前面那種那么簡(jiǎn)單的。