QUOTE:
ASP优化之显示数据查询内容Byshawl.qiu
废话少说,至目前为止,我觉得最快的显示数据查询语句:
linenum<% start=timer() setrs=server.CreateObject("adodb.recordset") withrs .open"selecttop50000*fromctglossary",conn setgname=rs("gname"):setsubgname=rs("subgname") dountil.eof response.writegname response.writesubgname response.write"<br/>" .movenext loop setgname=nothing:setsubgname=nothing .close endwith setrs=nothing'shawl.qiucode' response.write"<p/>"&formatNumber((timer()-start)*1000,3)&"毫秒" %>
以上语句执行情况为:
10000条记录:375.000毫秒
50000条记录:1,500.000毫秒
注意以上语句的name=rs("field"),前面都加了set.
如果不加set,且在循环体以外,那样显示的数据将会是许多条重复的记录.
---
如果循环体内使用的是rs("filed")而不是定义好的变量,那样会降低效率,至于为什么,比如你输入rs(0)代替varname也是一样的效率,道理就在这里.
注意循环体内没有使用拼接字符(&),循环体外使用无关紧要.
至于为什么不使用&字符,你输出十万个response.writevar(不加&),和输出一个response.writevar&var...&var10000就知道.
至于还有哪些地方不要使用&字符,除了循环体以外,重复使用的地方都不要使用&字符,比如sub,function,class.
可能会有人说obj.getString(parameter)显示很快,obj.getRows()也很快.
但我测试的结果是,这两个传说不灵.
还有预存储可能也不错,但由于没有需求,这个没试过.
最后,一个不错的思考,难道你不考虑静态技术吗?
shawl.qiu
-8-12
/btbtd