QUOTE:
ASP 优化之显示数据查询内容 By shawl.qiu
废话少说, 至目前为止, 我觉得最快的显示数据查询语句:
linenum
- <%
- start=timer()
- set rs=server.CreateObject("adodb.recordset")
- with rs
- .open "select top 50000 * from ctglossary",conn
- set gname=rs("gname"):set subgname=rs("subgname")
- do until .eof
- response.write gname
- response.write subgname
- response.write "<br/>"
- .movenext
- loop
- set gname=nothing:set subgname=nothing
- .close
- end with
- set rs=nothing 'shawl.qiu code'
- 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.write var(不加 &), 和输出一个 response.write var&var...&var10000 就知道.
至于还有哪些地方不要使用 & 字符, 除了循环体以外, 重复使用的地方都不要使用 & 字符, 比如 sub, function, class.
可能会有人说 obj.getString(parameter) 显示很快, obj.getRows() 也很快.
但我测试的结果是, 这两个传说不灵.
还有预存储可能也不错, 但由于没有需求, 这个没试过.
最后, 一个不错的思考, 难道你不考虑静态技术吗?
shawl.qiu
2006-8-12
http://blog.csdn.net/btbtd