1 明确查询的字段名称
2 使用rs(0)比rs(name)更快
3 使用记录集rs值前,将其赋值给变量
4 [TEST] 现有10W条数据,Access数据库保存
通过正常提取 | 通过存储过程提取| 使用GetRows()方法提取:
1 明确查询的字段名称
Select * from [data_table]
即从数据库data_table种抽取所有字段的记录值
Select * 语句的执行效率非常低,因为执行这样的语句时执行了两次查询, 先查询系统表来确定名称和数据类型.然后再查数据
所以精良减少使用select * 语句,而使用明确的字段名称,如:
Select name,pwd from [data_table]
2 使用rs(0)比rs(name)更快
记录集rs()里面可以写字段名,或字段索引号.比如
Rs(0)对应rs(name)
Rs(1)对应rs(pwd)
已证明用索引数访问记录集要比字段名快出几倍,按字符串查询要比按整数查询花去的更多的时间和系统资源
3 使用记录集rs值前,将其赋值给变量
<%
Set rs=conn.execute(select cname,cpwd from [data_table] where id=1)
If not rs.eof then
Do while not rs.eof
Cname=rs(0) 将rs赋值给变量
Cpwd=rs(1)
….
Rs.moveNext
Loop
End if
%>
4 [TEST] 现有10W条数据,Access数据库保存。
A.通过正常提取:
<%
Set rs=server.createObject(adodb.recordSet)
Rs.open select * from people order by id desc,cn,1,1
Do while not rs.eof
Response.write rs(id)& |
Rs.moveNext
loop
%>
耗时3,250.000毫秒 3秒
B.通过存储过程提取:
<%
Set cn=server.createObject(adodb.connection)
Cn.open driver={microsoft access driver (*.mdb)};DBQ=&server.mapPath(db2.mdb)
Set cmd=server.createObject(adodb.command)
cmd.activeConnection=cn
cmd.commandText=select * from people order by id desc
set rs=cmd.execute
do while not rs.eof
response.write rs(id)& |
rs.moveNext
loop
%>
耗时 2,187.500毫秒 2秒
C.使用GetRows()方法提取:
<%
Set cn=server.createObject(adodb.connection)
Set cmd=server.createObject(adodb.command)
Cn.open driver={microsoft access driver (*.mdb)};DBQ=&server.mapPath(db2.mdb)
cmd.activeConnection=cn
cmd.commandText=select * from people order by id desc
set rs=cmd.execute
rsArray=rs.getRows()将记录集数据存入一个数组, 该数组默认为二维数组
for i=0 to uBound(rsArray,2)Ubound(array,num) 其中num意指数组维数, 默认不填为一维, 2等于二维
response.write rsArray(0,i)& |
next
%>
耗时:187.500毫秒 0.2秒
rsArray(a,b)
a表示存入该数组记录集的字段号b表示存入该数组记录集的条数
如下表:
| id | uname | upwd |
| RsArray(0,0) | RsArray(1,0) | RsArray(2,0) |
| RsArray(0,1) | RsArray(1,1) | RsArray(2,1) |
| RsArray(0,2) | RsArray(1,2) | RsArray(2,2) |