无意在网上看了篇文章,列举了列出10w条数据采取了3种方式:一般方式,存储过程,getrows,其中一般方式是3秒,存储过程是2秒,而getrows仅需0.2秒

抱着好奇的心态也来做了个测试!

第ⅰ种输出方式do while:
set rs=conn.execute(sql)
do while not rs.eof
    tvalue=tvalue&rs(0)&" "
    rs.movenext
loop
response.write tvalue

第ⅱ种输出方式getrows:
set cmd = server.createobject("adodb.command")
cmd.activeconnection = conn
cmd.commandtype=1
cmd.commandtext = sql
set medalrs = cmd.execute
values = medalrs.getrows
for recindex = 0 to ubound(values, 2)
            tvalue=tvalue&values(0, recindex)&" "
next
response.write tvalue

a组:调用8w最新username
直接定义sql,ⅰ输出时间分别是:
30.07422
30.61328
28.72266
29.48047
29.80859

存储过程,ⅰ输出时间分别是:
28.83594
28.57813
29.625
29.95313
28.53906

直接定义sql,ⅱ输出时间分别是:
28.26953
28.32422
31.61719
28.47656
28.18359

存储过程,ⅱ输出时间分别是:
28.14453
28.12891
28.07031
28.55078
28.14063

看上去所耗时间相差不大!!在来看看b组测试数据。getrows也没有传说中的提高10倍速度 - -||

b组:调用2k最新的username
直接定义sql,ⅰ输出时间分别是:
.03125
2.734375e-02

存储过程,ⅰ输出时间分别是:
.03125
3.515625e-02

直接定义sql,ⅱ输出时间分别是:
.0234375
1.953125e-02

存储过程,ⅱ输出时间分别是:
.0234375
1.953125e-02

这个2k的貌似没有差别!难道速度太快??而且略微显示出getrows一点点速度,不过貌似可以完全忽略不计!! - -||

c组:调用从中间抽取2kid的username
直接定义sql,ⅰ输出时间分别是:
.0234375
2.734375e-02

存储过程,ⅰ输出时 间分别是:
.0234375
2.734375e-02

直接定义sql,ⅱ输出时间分别是:
.015625
1.953125e-02

存储过程,ⅱ输出时间分别是:
.015625
1.953125e-02

这个和上面的雷同,貌似也没明显区别!!

综上所诉,没有感觉getrows显示速度快到10倍;更纠结的是存储过程也没有明显的优势??难道是我方式错误!

欢迎留言纠正错误!!!