加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > Asp教程 > 正文

怎么晋升ASP数据查询执行效率

发布时间:2023-08-05 14:37:48 所属栏目:Asp教程 来源:
导读:如何提高ASP数据查询执行效率

1 明确查询的字段名称

2 使用rs(0)比rs(“name”)更快

3 使用记录集rs值前,将其赋值给变量

4 [TEST] 现有10W条数据,Access数据库保存

通过正常提取 | 通
如何提高ASP数据查询执行效率
 
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表示存入该数组记录集的条数
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章